mysql LOAD DATA INFILE 与自增主键
我正在尝试通过“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列)加载到包含21个字段的表中,跳过id字段 让id字段自动填充,使用自动增加的索引。
5 个回答
2
你的数据文件应该像这样写:
空值, 学习字符, 其他字段...
MySQL会把空值替换成一个递增的ID。
3
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系统的情况。
22
指定列列表:
默认情况下,如果在LOAD DATA INFILE语句的末尾没有提供列列表,那么输入的每一行都需要包含表中每一列的数据。如果你只想加载表中的某些列,就需要指定一个列列表:
LOAD DATA INFILE 'persondata.txt' INTO TABLE persondata (col1,col2,...);