2009-08-05 94 views
13

のPythonからLOAD DATA LOCAL INFILEコマンドを実行するための構文定義、サンプル、サンプルコード、Wikiなどを探しています。PythonのMySQL LOAD DATA LOCAL INFILEの例ですか?

私はmysqlimportも使用できると信じています。そのため、フィードバック(およびコードスニペット)がより良いルートであれば大歓迎です。 Googleの検索が現在の情報の多くをめぐらせていない

どちらの場合も目標は同じです:既知の命名規則&の構造を持つ何百ものファイルを1つのMySQLテーブルに自動読み込みします。

デビッド

+0

はmysql-pythonのかSQLAlchemyのように、任意の特定のライブラリを使用していますか? – dalloliogm

+0

私は何でも使うことができます。今、私は MySQLdbをスクリプトにインポートするだけです。 –

答えて

22

まあ、PythonのMySQLdbはを使用して、私はこれを使用します。

connection = MySQLdb.Connect(host='**', user='**', passwd='**', db='**') 
cursor = connection.cursor() 
query = "LOAD DATA INFILE '/path/to/my/file' INTO TABLE sometable FIELDS TERMINATED BY ';' ENCLOSED BY '\"' ESCAPED BY '\\\\'" 
cursor.execute(query) 
connection.commit() 

は、ニーズに応じて適宜ホスト/ユーザー/ passwdファイル/デシベルを交換します。これは、MySQLのドキュメントhereに基づいています。正確なLOAD DATA INFILE文は、特定の要件などに依存します(FIELDS TERMINATED BY、ENCLOSED BY、およびESCAPED BY文は、読み込みしようとしているファイルの種類)。

+0

私の場合は、最後にcommit()が欠けていました。これは、LOAD DATAの後に必要であることが分かります。そうしないと、トランザクションが失われます。 –

+0

多くの場所には表示されていない 'connection.commit()'のために2度根絶することができたらいいですか? –

+0

正確に。ほとんどの場所では、「コミット」は言及されていないので、単に機能しません。 – SexyBeast

0

また、あなたのクエリの後に以下の行を追加することによって、インポートの結果を得ることができます。

results = connection.info() 
関連する問題