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