簡體   English   中英

帶有自動增量主鍵的mysql LOAD DATA INFILE

[英]mysql LOAD DATA INFILE with auto-increment primary key

我正在嘗試使用“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'"

有任何想法嗎?

簡介:創建一個帶有附加id字段的表,該表將自動將加載數據(20列)添加到跳過id字段的21個字段的表中,讓id字段自動填充自動增量索引。

指定列列表:

默認情況下,如果在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

LOAD DATA LOCAL INFILE '/var/www/.........../file.csv' INTO TABLE table_name FIELDS TERMINATED BY ',' ENCLOSED BY '\"' LINES TERMINATED BY '\\r\\n' (field1,field2,.........,fieldn)

這是在ubuntu的情況下

你的數據文件應如下所示:null,study chars,其他字段...... MySQL將插入遞增的id而不是null

列列表必須在最后,id列必須有一個set = null才能自動遞增 - 遺憾的是mysql文檔非常模糊。 他們只是說col1,col2,但它們是源文件或dest表中的那些。 這個頁面通過清晰的例子幫助了很多。

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

如果csv記錄是這樣的話,請使用以下查詢

“21231”,“234424”,“我的類別”,“1”

LOAD DATA LOCAL INFILE'C:/wamp/www/cakephp/app/webroot/files/product_catalogs/categories.csv'INTO TABLE貓場由'''封閉'''由'\\ r \\ n'終止的線路( CATEGORY_ID,PARENT_ID,類別,is_leaf)

我成功地做到了。 :)

暫無
暫無

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

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