97972561行の大きなテーブルを取得しました。テーブルをファイル(txt、json、pickleなど)にエクスポートしたいのですが、これは次の操作で簡単です。どうすればいいですか?「select * from the_table」をクエリして結果をファイルに保存しようとしましたが、時間がかかり失敗しました。「intooutfile」も試しましたが、「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を使用しています。どんな助けでもいただければ幸いです!
ここでの1つのオプションは、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に読み込む必要がある提案されたアプローチよりもはるかに高速であるはずです。
ローカルのPythonスクリプトを実行しているマシンrecordings.pkl
ではなく、MySQLが実行されているのと同じマシンで呼び出されるCSVファイルが生成されることに注意してください。したがって、CSVを目的のマシンに移動するには、ここで追加の手順が必要になる可能性があります。ただし、このアプローチではデータベースとの間のラウンドトリップが回避されるため、ファイルを移動するコストは現在のアプローチに比べて小さい可能性があります。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加