# CSV.write("\*.txt",DataFrame) ReadOnlyMemoryError()

**URL:** https://discourse.julialang.org/t/csv-write-txt-dataframe-readonlymemoryerror/33085
**Category:** General Usage
**Tags:** dataframes
**Created:** [January 8, 2020, 4:39am UTC](https://discourse.julialang.org/t/csv-write-txt-dataframe-readonlymemoryerror/33085 "2020-01-08T04:39:17Z")
**Posts on this page:** 15
**Page:** 1

<div class="post-metadata">

### Author: ![BMval](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/bmval/32/7647_2.png) [@BMval](https://discourse.julialang.org/u/BMval)
#### Post date: [January 8, 2020, 4:39am UTC](https://discourse.julialang.org/t/csv-write-txt-dataframe-readonlymemoryerror/33085/1 "2020-01-08T04:39:17Z")

</div>

Does somebody have the same error?  
How to deal with it.  
Dataframe is quite big: 339000\*18 (String type).  
Is the problem connected to size?

Thank you in advance.

---

<div class="post-metadata">

### Author: ![jling](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/jling/32/212909_2.png) [@jling](https://discourse.julialang.org/u/jling)
#### Post date: [January 8, 2020, 4:40am UTC](https://discourse.julialang.org/t/csv-write-txt-dataframe-readonlymemoryerror/33085/2 "2020-01-08T04:40:42Z")

</div>

how much memory do you have and how large is the txt file?

---

<div class="post-metadata">

### Author: ![BMval](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/bmval/32/7647_2.png) [@BMval](https://discourse.julialang.org/u/BMval)
#### Post date: [January 8, 2020, 4:42am UTC](https://discourse.julialang.org/t/csv-write-txt-dataframe-readonlymemoryerror/33085/3 "2020-01-08T04:42:26Z")

</div>

I have no idea, how to check memory under the dataframe. It can be around 1Gb.

---

<div class="post-metadata">

### Author: ![jling](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/jling/32/212909_2.png) [@jling](https://discourse.julialang.org/u/jling)
#### Post date: [January 8, 2020, 4:47am UTC](https://discourse.julialang.org/t/csv-write-txt-dataframe-readonlymemoryerror/33085/4 "2020-01-08T04:47:06Z")

</div>

I mean your computer; oh wait, I see what you saying, try this  
[https://docs.julialang.org/en/v1/base/base/#Base.sizeof-Tuple{Type}](https://docs.julialang.org/en/v1/base/base/#Base.sizeof-Tuple%7BType%7D)

---

<div class="post-metadata">

### Author: ![BMval](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/bmval/32/7647_2.png) [@BMval](https://discourse.julialang.org/u/BMval)
#### Post date: [January 8, 2020, 4:53am UTC](https://discourse.julialang.org/t/csv-write-txt-dataframe-readonlymemoryerror/33085/5 "2020-01-08T04:53:55Z")

</div>

My computer memory is 32gb. It’s for sure enough.  
The dataframe size 1.3gb  
Is it too big?

---

<div class="post-metadata">

### Author: ![jling](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/jling/32/212909_2.png) [@jling](https://discourse.julialang.org/u/jling)
#### Post date: [January 8, 2020, 5:26am UTC](https://discourse.julialang.org/t/csv-write-txt-dataframe-readonlymemoryerror/33085/6 "2020-01-08T05:26:00Z")

</div>

should be fine, pinning @quinnj since I don’t see any similar issue on github

---

<div class="post-metadata">

### Author: ![quinnj](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/quinnj/32/11_2.png) [@quinnj](https://discourse.julialang.org/u/quinnj)
#### Post date: [January 8, 2020, 2:50pm UTC](https://discourse.julialang.org/t/csv-write-txt-dataframe-readonlymemoryerror/33085/7 "2020-01-08T14:50:21Z")

</div>

Can you share the full error/stacktrace you’re seeing? Can you share the code here to see how you’re calling `CSV.write`?

---

<div class="post-metadata">

### Author: ![BMval](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/bmval/32/7647_2.png) [@BMval](https://discourse.julialang.org/u/BMval)
#### Post date: [January 8, 2020, 3:01pm UTC](https://discourse.julialang.org/t/csv-write-txt-dataframe-readonlymemoryerror/33085/8 "2020-01-08T15:01:51Z")

</div>

Yes, Here is it.  
Additionally, there is no error for 0.8Gb DataFrame, but there is the error for 1.3GB DataFrame

> CSV.write(“t2.csv”,df2)  
> ERROR: ReadOnlyMemoryError()  
> Stacktrace:  
> [1] + at .\int.jl:53 [inlined]  
> [2] writecell(::Array{UInt8,1}, ::Int64, ::Int64, ::IOStream, ::String, ::CSV.Options{UInt8,UInt8,Nothing,Tuple{}}) at C:\Users\vbaidin.julia\packages\CSV\ztQqu\src\write.jl:305  
> [3] #64 at C:\Users\vbaidin.julia\packages\CSV\ztQqu\src\write.jl:182 [inlined]  
> [4] macro expansion at C:\Users\vbaidin.julia\packages\Tables\FXXeK\src\utils.jl:54 [inlined]  
> [5] eachcolumn at C:\Users\vbaidin.julia\packages\Tables\FXXeK\src\utils.jl:49 [inlined]  
> [6] writerow(::Array{UInt8,1}, ::Base.RefValue{Int64}, ::Int64, ::IOStream, ::Tables.Schema{(:Guid, :Id, :HeadLine, :Body, :VersionCreatedDate, :VersionCreatedTime, :FirstCreatedDate, :FirstCreatedTime, :TakeSequence, :MimeType, :PubStatus, :Language, :AltId, :MessageType, :Subjects, :Provider, :InstancesOf, :Urgency),Tuple{String,String,String,String,Date,Time,Date,Time,Int64,String,String,String,String,Int64,String,String,String,Int64}}, ::Tables.ColumnsRow{NamedTuple{(:Guid, :Id, :HeadLine, :Body, :VersionCreatedDate, :VersionCreatedTime, :FirstCreatedDate, :FirstCreatedTime, :TakeSequence, :MimeType, :PubStatus, :Language, :AltId, :MessageType, :Subjects, :Provider, :InstancesOf, :Urgency),Tuple{Array{String,1},Array{String,1},Array{String,1},Array{String,1},Array{Date,1},Array{Time,1},Array{Date,1},Array{Time,1},Array{Int64,1},Array{String,1},Array{String,1},Array{String,1},Array{String,1},Array{Int64,1},Array{String,1},Array{String,1},Array{String,1},Array{Int64,1}}}}, ::Int64, ::CSV.Options{UInt8,UInt8,Nothing,Tuple{}}) at C:\Users\vbaidin.julia\packages\CSV\ztQqu\src\write.jl:180  
> [7] (::CSV.var"#62#63"{CSV.var"#55#56"{Bool,Tables.Schema{(:Guid, :Id, :HeadLine, :Body, :VersionCreatedDate, :VersionCreatedTime, :FirstCreatedDate, :FirstCreatedTime, :TakeSequence, :MimeType, :PubStatus, :Language, :AltId, :MessageType, :Subjects, :Provider, :InstancesOf, :Urgency),Tuple{String,String,String,String,Date,Time,Date,Time,Int64,String,String,String,String,Int64,String,String,String,Int64}},Tables.RowIterator{NamedTuple{(:Guid, :Id, :HeadLine, :Body, :VersionCreatedDate, :VersionCreatedTime, :FirstCreatedDate, :FirstCreatedTime, :TakeSequence, :MimeType, :PubStatus, :Language, :AltId, :MessageType, :Subjects, :Provider, :InstancesOf, :Urgency),Tuple{Array{String,1},Array{String,1},Array{String,1},Array{String,1},Array{Date,1},Array{Time,1},Array{Date,1},Array{Time,1},Array{Int64,1},Array{String,1},Array{String,1},Array{String,1},Array{String,1},Array{Int64,1},Array{String,1},Array{String,1},Array{String,1},Array{Int64,1}}}},CSV.Options{UInt8,UInt8,Nothing,Tuple{}},NTuple{18,Symbol},Int64,Int64,Array{UInt8,1}}})(::IOStream) at C:\Users\vbaidin.julia\packages\CSV\ztQqu\src\write.jl:80  
> [8] #open#271(::Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}}, ::typeof(open), ::CSV.var"#62#63"{CSV.var"#55#56"{Bool,Tables.Schema{(:Guid, :Id, :HeadLine, :Body, :VersionCreatedDate, :VersionCreatedTime, :FirstCreatedDate, :FirstCreatedTime, :TakeSequence, :MimeType, :PubStatus, :Language, :AltId, :MessageType, :Subjects, :Provider, :InstancesOf, :Urgency),Tuple{String,String,String,String,Date,Time,Date,Time,Int64,String,String,String,String,Int64,String,String,String,Int64}},Tables.RowIterator{NamedTuple{(:Guid, :Id, :HeadLine, :Body, :VersionCreatedDate, :VersionCreatedTime, :FirstCreatedDate, :FirstCreatedTime, :TakeSequence, :MimeType, :PubStatus, :Language, :AltId, :MessageType, :Subjects, :Provider, :InstancesOf, :Urgency),Tuple{Array{String,1},Array{String,1},Array{String,1},Array{String,1},Array{Date,1},Array{Time,1},Array{Date,1},Array{Time,1},Array{Int64,1},Array{String,1},Array{String,1},Array{String,1},Array{String,1},Array{Int64,1},Array{String,1},Array{String,1},Array{String,1},Array{Int64,1}}}},CSV.Options{UInt8,UInt8,Nothing,Tuple{}},NTuple{18,Symbol},Int64,Int64,Array{UInt8,1}}}, ::String, ::Vararg{String,N} where N) at .\io.jl:298  
> [9] open(::Function, ::String, ::String) at .\io.jl:296  
> [10] with at C:\Users\vbaidin.julia\packages\CSV\ztQqu\src\write.jl:139 [inlined]  
> [11] #write#54 at C:\Users\vbaidin.julia\packages\CSV\ztQqu\src\write.jl:73 [inlined]  
> [12] write(::Tables.Schema{(:Guid, :Id, :HeadLine, :Body, :VersionCreatedDate, :VersionCreatedTime, :FirstCreatedDate, :FirstCreatedTime, :TakeSequence, :MimeType, :PubStatus, :Language, :AltId, :MessageType, :Subjects, :Provider, :InstancesOf, :Urgency),Tuple{String,String,String,String,Date,Time,Date,Time,Int64,String,String,String,String,Int64,String,String,String,Int64}}, ::Tables.RowIterator{NamedTuple{(:Guid, :Id, :HeadLine, :Body, :VersionCreatedDate, :VersionCreatedTime, :FirstCreatedDate, :FirstCreatedTime, :TakeSequence, :MimeType, :PubStatus, :Language, :AltId, :MessageType, :Subjects, :Provider, :InstancesOf, :Urgency),Tuple{Array{String,1},Array{String,1},Array{String,1},Array{String,1},Array{Date,1},Array{Time,1},Array{Date,1},Array{Time,1},Array{Int64,1},Array{String,1},Array{String,1},Array{String,1},Array{String,1},Array{Int64,1},Array{String,1},Array{String,1},Array{String,1},Array{Int64,1}}}}, ::String, ::CSV.Options{UInt8,UInt8,Nothing,Tuple{}}) at C:\Users\vbaidin.julia\packages\CSV\ztQqu\src\write.jl:68  
> [13] #write#53(::Char, ::Char, ::Nothing, ::Nothing, ::Char, ::Char, ::Char, ::Nothing, ::Bool, ::String, ::Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}}, ::typeof(CSV.write), ::String, ::DataFrame) at C:\Users\vbaidin.julia\packages\CSV\ztQqu\src\write.jl:60  
> [14] write(::String, ::DataFrame) at C:\Users\vbaidin.julia\packages\CSV\ztQqu\src\write.jl:53  
> [15] top-level scope at none:0

---

<div class="post-metadata">

### Author: ![quinnj](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/quinnj/32/11_2.png) [@quinnj](https://discourse.julialang.org/u/quinnj)
#### Post date: [January 8, 2020, 3:19pm UTC](https://discourse.julialang.org/t/csv-write-txt-dataframe-readonlymemoryerror/33085/9 "2020-01-08T15:19:27Z")

</div>

Hmmm…nothing sticks out at first glance; is there any way you could share the dataset w/ me? Perhaps compressed and shared via something like [http://ge.tt/](http://ge.tt/)? Even if just privately to me?

---

<div class="post-metadata">

### Author: ![BMval](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/bmval/32/7647_2.png) [@BMval](https://discourse.julialang.org/u/BMval)
#### Post date: [January 8, 2020, 4:16pm UTC](https://discourse.julialang.org/t/csv-write-txt-dataframe-readonlymemoryerror/33085/10 "2020-01-08T16:16:19Z")

</div>

I have found the row, which gives the error.  
Something is strange since DataFrame memory size (only 1 row) is 0.8GB, but I check every column and the maximum size is string column 4MB.

> CSV.write(“t4.csv”,df4)  
> ERROR: ArgumentError: ‘DataFrameRow{DataFrame,DataFrames.Index}’ iterates ‘String’ values, which don’t satisfy the Tables.jl Row-iterator interface  
> Stacktrace:  
> [1] invalidtable(::DataFrameRow{DataFrame,DataFrames.Index}, ::String) at C:\Users\vbaidin.julia\packages\Tables\FXXeK\src\tofromdatavalues.jl:34  
> [2] iterate at C:\Users\vbaidin.julia\packages\Tables\FXXeK\src\tofromdatavalues.jl:40 [inlined]  
> [3] #write#57(::Bool, ::Bool, ::Array{String,1}, ::typeof(CSV.write), ::Nothing, ::Tables.IteratorWrapper{DataFrameRow{DataFrame,DataFrames.Index}}, ::String, ::CSV.Options{UInt8,UInt8,Nothing,Tuple{}}) at C:\Users\vbaidin.julia\packages\CSV\ztQqu\src\write.jl:96  
> [4] write(::Nothing, ::Tables.IteratorWrapper{DataFrameRow{DataFrame,DataFrames.Index}}, ::String, ::CSV.Options{UInt8,UInt8,Nothing,Tuple{}}) at C:\Users\vbaidin.julia\packages\CSV\ztQqu\src\write.jl:93  
> [5] #write#53(::Char, ::Char, ::Nothing, ::Nothing, ::Char, ::Char, ::Char, ::Nothing, ::Bool, ::String, ::Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}}, ::typeof(CSV.write), ::String, ::DataFrameRow{DataFrame,DataFrames.Index}) at C:\Users\vbaidin.julia\packages\CSV\ztQqu\src\write.jl:60  
> [6] write(::String, ::DataFrameRow{DataFrame,DataFrames.Index}) at C:\Users\vbaidin.julia\packages\CSV\ztQqu\src\write.jl:53  
> [7] top-level scope at none:0

---

<div class="post-metadata">

### Author: ![BMval](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/bmval/32/7647_2.png) [@BMval](https://discourse.julialang.org/u/BMval)
#### Post date: [January 8, 2020, 5:02pm UTC](https://discourse.julialang.org/t/csv-write-txt-dataframe-readonlymemoryerror/33085/11 "2020-01-08T17:02:12Z")

</div>

I check, It seems, CSV can’t write DataFrame with column string more than 4mb

Is it a bug?

---

<div class="post-metadata">

### Author: ![quinnj](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/quinnj/32/11_2.png) [@quinnj](https://discourse.julialang.org/u/quinnj)
#### Post date: [January 9, 2020, 3:57am UTC](https://discourse.julialang.org/t/csv-write-txt-dataframe-readonlymemoryerror/33085/12 "2020-01-09T03:57:05Z")

</div>

There shouldn’t be any limitation like this.

---

<div class="post-metadata">

### Author: ![BMval](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/bmval/32/7647_2.png) [@BMval](https://discourse.julialang.org/u/BMval)
#### Post date: [January 9, 2020, 3:02pm UTC](https://discourse.julialang.org/t/csv-write-txt-dataframe-readonlymemoryerror/33085/13 "2020-01-09T15:02:34Z")

</div>

Where is better to report about this bug?

---

<div class="post-metadata">

### Author: ![nalimilan](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/nalimilan/32/147_2.png) [@nalimilan](https://discourse.julialang.org/u/nalimilan)
#### Post date: [January 9, 2020, 3:58pm UTC](https://discourse.julialang.org/t/csv-write-txt-dataframe-readonlymemoryerror/33085/14 "2020-01-09T15:58:35Z")

</div>

At [Issues · JuliaData/CSV.jl · GitHub](https://github.com/JuliaData/CSV.jl/issues)

---

<div class="post-metadata">

### Author: ![davidanthoff](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/davidanthoff/32/223493_2.png) [@davidanthoff](https://discourse.julialang.org/u/davidanthoff)
#### Post date: [January 9, 2020, 5:42pm UTC](https://discourse.julialang.org/t/csv-write-txt-dataframe-readonlymemoryerror/33085/15 "2020-01-09T17:42:46Z")

</div>

You can also try [CSVFiles.jl](https://github.com/queryverse/CSVFiles.jl):

```julia
using CSVFiles

df |> save("foo.csv")

```

It has a known problem with very large number of columns, but that threshold is at a couple of hundred columns, so the 18 you have should be no problem at all. Beyond that there shouldn’t be any limits on size.
