簡體   English   中英

如何將 mysql 表導出到文件

[英]How to export a mysql table to a file

我有一張有 97972561 行的大桌子。 我想將表格導出到一個文件中(txt 或 json 或 pickle 或任何東西),這對於我的以下操作更容易。 我該怎么做? 我嘗試查詢“select * from the_table”並將結果保存到文件中,但是需要很長時間並且失敗。 我也嘗試過“進入 outfile”,但我的“secure_file_priv”是 null,我無法更改它。

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 腳本的機器上。 因此,您可能需要額外的步驟來將 CSV 移動到您想要的機器上。 但是,鑒於這種方法避免了與數據庫之間的任何往返,與您當前的方法相比,移動文件的成本可能很小。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM