tags:

views:

273

answers:

2

Hi. I wonder if there exists way to work with large files in Mathematica ? Currently I have a file about 500Mb with table data.

Import["data.txt","Table"];

What is alternate way?

+5  A: 

Use OpenRead["file"] which gives you an InputStream object on which you can use Read[stream]. Depending on the formatting of the data file you may need to set custom option values in Read[] for RecordSeparators.

Example:

In[1]:= str = OpenRead["ExampleData/USConstitution.txt"]    
Out[1]= InputStream["ExampleData/USConstitution.txt", 24]   

In[2]:= Read[str, Word]    
Out[2]= "We"    
In[3]:= Read[str, Word]
Out[3]= "the"    
In[4]:= Read[str, Record]
Out[4]= "People of the United States, in Order to form a more perfect Union,"
Timo
You need to remember to close the stream when you are done. Also, if you abort the operation, the stream will remain open. This can result in nasty surprises. So, I'd recommend wrapping your read code in a `CheckAbort` to catch the abort, and then close the stream regardless of whether the operation has been aborted or not.
rcollyer
Excellent point!
Timo
+2  A: 

You could also load your data into a database (for example MySQL) and access it from Mathematica using DatabaseLink

gdelfino
great advice! thanks
Konoplianko