ubuntu 12.04 オペレーティング システムを使用しています。ファイルでいっぱいのフォルダーがあり.csv
ます。これらすべての csv ファイルをローカル マシンの mysql データベースにインポートする必要があります。現在、mysqlコマンドラインからこの構文を使用して、csvファイルをデータベースに1つずつロードしています。
load data local infile 'file_name.csv' into table table_name fields terminated by ',' optionally enclosed by '"' lines terminated by '\r\n';
これは本当にうまくいきます。これらすべてのファイルを一度にロードできる方法があるかどうか知りたいです。私の最初のアイデアは、それを処理するための Python スクリプトを作成することでした。
import MySQLdb as mysql
import os
import string
db=mysql.connect(host="localhost",user="XXXX",passwd="XXXX",db="test")
l = os.listdir(".")
for file_name in l:
print file_name
c=db.cursor()
if (file_name.find("DIV.csv")>-1):
c.execute("""load data local infile '%s' into table cef_div_table fields terminated by ',' optionally enclosed by '"' lines terminated by '\r\n';""" % file_name)
このソリューションではload data local infile
、オプションを使用してコマンド ラインから MySQL を起動しない限り、新しいバージョンの MySQL クライアントでは動作しないという問題が発生してい--local-infile
ます。それは本当に引きずりです...
うまくいくように見える解決策を見つけました。Pythonで接続を確立するときにオプションを使用しlocal_file = 1
ます(ここで提案されているように: MySQL LOAD DATA LOCAL INFILE Python )。このように、コードはエラーなしで完了したように見えますが、データベースには何もアップロードされません。
奇妙なことに、念のために、mysqlコマンドラインから単一のファイルをアップロードしようとしましたが、ファイルは機能しました。
複数のcsvファイルを一度にmysqlにアップロードするというこの問題に対する別の解決策を試してみたいと思っています。どんな助けでも大歓迎です!