我有一张大表,上面有97972561行。我想将表导出到文件(txt或json或pickle或其他任何文件)中,这对于我的后续操作来说比较容易。我该怎么做?我尝试查询“从the_table中选择*”并将结果保存到文件中,但是需要很长时间并且失败。我也尝试过“进入outfile”,但是我的“ secure_file_priv”为空,因此无法更改。
mydb = mysql.connector.connect(
host="localhost",
user="username",
passwd="xxxxxx",
db="mydb")
cur = mydb.cursor()
query = "SELECT * FROM PREDICATION"
cur.execute(query)
all_recordings = cur.fetchall()
mydb.close()
# save all recordings to a pickle file
with open('recordings.pkl', 'wb') as f:
pickle.dump(all_recordings, f)
我目前在终端机(Mac)和工作台6.3中使用mysql服务器8.0.18。任何帮助,将不胜感激!
这里的一种选择是使用MySQL的SELECT ... INTO OUTFILE
功能(但请参阅下面的注释):
query = """SELECT * FROM PREDICATION
INTO OUTFILE 'recordings.pkl'
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n'"""
cur.execute(query)
这可能是将MySQL表转储为CSV的最快方法,并且比建议的方法要快得多,该方法要求在写入之前将所有数据读入Python。
注意,这将在运行MySQL的同一台计算机上生成名为recordings.pkl
的CSV文件,而在运行本地Python脚本的计算机上生成not的CSV文件。因此,您可能需要在此处采取其他步骤才能将CSV移至所需的计算机。但是,考虑到这种方法避免了往返数据库的往返,与当前方法相比,移动文件的成本可能会很小。