如何将mysql表导出到文件中

问题描述 投票:0回答:1

我有一张大表,上面有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 mysql-workbench mysql-python
1个回答
0
投票

这里的一种选择是使用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移至所需的计算机。但是,考虑到这种方法避免了往返数据库的往返,与当前方法相比,移动文件的成本可能会很小。

© www.soinside.com 2019 - 2024. All rights reserved.