如何将 mysql table 导出到文件
How to export a mysql table to a file
我有一个很大的 table,有 97972561 行。我想将 table 导出到一个文件(txt 或 json 或 pickle 或任何东西),这对我的后续操作来说更容易。我该怎么做?我尝试查询 "select * from the_table" 并将结果保存到文件中,但耗时很长,失败了。我也试过 "into 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) 中使用 mysql 服务器 8.0.18 和 workbench 6.3。如有任何帮助,我们将不胜感激!
此处的一个选项是使用 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 table 转储为 CSV 的最快方法,并且应该比您建议的方法快得多,后者需要先将所有数据读入 Python写出来。
请注意,将在 MySQL 为 运行 的同一台计算机上生成名为 recordings.pkl
的 CSV 文件, 而非 运行 您的本地 Python 脚本。因此,您可能需要在此处执行额外的步骤才能将 CSV 移动到您想要的机器。但是,鉴于此方法避免了任何往返 to/from 数据库,与您当前的方法相比,移动文件的成本可能很小。
我有一个很大的 table,有 97972561 行。我想将 table 导出到一个文件(txt 或 json 或 pickle 或任何东西),这对我的后续操作来说更容易。我该怎么做?我尝试查询 "select * from the_table" 并将结果保存到文件中,但耗时很长,失败了。我也试过 "into 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) 中使用 mysql 服务器 8.0.18 和 workbench 6.3。如有任何帮助,我们将不胜感激!
此处的一个选项是使用 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 table 转储为 CSV 的最快方法,并且应该比您建议的方法快得多,后者需要先将所有数据读入 Python写出来。
请注意,将在 MySQL 为 运行 的同一台计算机上生成名为 recordings.pkl
的 CSV 文件, 而非 运行 您的本地 Python 脚本。因此,您可能需要在此处执行额外的步骤才能将 CSV 移动到您想要的机器。但是,鉴于此方法避免了任何往返 to/from 数据库,与您当前的方法相比,移动文件的成本可能很小。