[英]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,...);
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.