【发布时间】:2016-02-01 17:04:26
【问题描述】:
我有一个大的 sql 文件 (20 GB),我想将其转换为 csv。我打算将文件加载到 Stata 中进行分析。我有足够的内存来加载整个文件(我的电脑有 32GB 内存)
问题是:到目前为止,我使用 Python 在网上找到的解决方案 (sqlite3) 似乎需要比我当前系统更多的 RAM:
- 读取 SQL
- 写入 csv
这里是代码
import sqlite3
import pandas as pd
con=sqlite3.connect('mydata.sql')
query='select * from mydata'
data=pd.read_sql(query,con)
data.to_csv('export.csv')
con.close()
sql 文件包含大约 15 个变量,可以是时间戳、字符串或数值。没什么特别的。
我认为一种可能的解决方案是读取 sql 并一次写入 csv 文件一行。但是,我不知道该怎么做(在 R 或 Python 中)
非常感谢任何帮助!
【问题讨论】:
-
你能发布你的 sql 文件的一小部分(非常小)吗?如果可能的话,还有你的 Python 或 R 代码
-
不幸的是我不能发布任何子集。但该文件包含各种变量(时间戳、带有任何字符的字符串(可能还有一些中文、数字等)。
-
@dickoa 看到我上面的编辑。谢谢!
-
您可以使用“编辑”按钮将代码粘贴到问题上,我认为在问题上更好。如果您不能发布文件的任何子集,那么 sql 文件的示例将帮助人们尝试回答和帮助您。
-
@dickoa 我正在尝试您的方法,但我收到以下错误 unicodeencodeerror: 'ascii' codec can't encode charater u'\xee' in position 1: ordinal not in range (128)。 ..你知道我应该怎么做吗?