16

「LOAD DATA LOCAL INFILE 'filename' INTO TABLE 'tablename'」を使用してデータ ファイルを mysql テーブルにロードしようとしています。

問題は、ソース データ ファイルにすべてのフィールドのデータが含まれているが、主キー ('id' 列) がないことです。データベースの作成中に一意の id フィールドを追加しましたが、次のフィールドからデータをテーブルにインポートし、インポート中に id フィールドを自動インクリメントする必要があります。

def create_table():
            cursor.execute ("""
                    CREATE TABLE variants
                    (
                    id integer(10) auto_increment primary key,
                    study_no CHAR(40),
                    other fields.....


                    )
                    """)

ここに私のLOADクエリがあります

query1= "LOAD DATA LOCAL INFILE '"+currentFile+"' INTO TABLE variants FIELDS TERMINATED BY '\\t' LINES TERMINATED BY '\\n'"

何か案は?

概要: ロード データ (20 列) を 21 フィールドのテーブルに自動インクリメントする追加の id フィールドを持つテーブルを作成し、id フィールドをスキップして、id フィールドに自動インクリメント インデックスを自動的に入力します。

4

5 に答える 5

22

列リストを指定します。

デフォルトでは、LOAD DATA INFILEステートメントの最後に列リストが指定されていない場合、入力行には各テーブル列のフィールドが含まれている必要があります。テーブルの列の一部のみをロードする場合は、列リストを指定します。

LOAD DATA INFILE 'persondata.txt' INTO TABLE persondata (col1,col2,...);

http://dev.mysql.com/doc/refman/5.1/en/load-data.html

于 2010-04-26T19:15:50.093 に答える
2

あなたのデータファイルは次のようになります: null, study chars, other fields... MySQL は null の代わりにインクリメントされた ID を挿入します

于 2012-02-21T22:03:55.253 に答える
0

列リストは最後にある必要があり、id 列には set=null が自動インクリメントされる必要があります。残念ながら、mysql のドキュメントは非常に曖昧です。col1、col2と言うだけですが、ソースファイルまたはdestテーブルにあるものです。このページは、明確な例によって大いに役立ちました。

http://www.experts-exchange.com/articles/Database/MySQL/Load-Delimited-Data-into-MySQL-Server.html

于 2010-04-26T20:04:40.803 に答える
0

csv レコードがそのような場合は、次のクエリを使用します

"21231","234424","マイ カテゴリ","1"

LOAD DATA LOCAL INFILE 'C:/wamp/www/cakephp/app/webroot/files/product_catalogs/categories.csv' をテーブルに入力しますcategory_id,parent_id,category,is_leaf)

私はそれを成功させました。:)

于 2011-03-24T06:29:11.980 に答える