繁体   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