2009-11-01 80 views
11

我试图使用“LOAD DATA LOCAL INFILE'filename'INTO TABLE'tablename'”加载数据文件到mysql表中。MySQL LOAD DATA INFILE - 加载没有主键的文件

问题是源数据文件包含每个字段的数据,但主键丢失('id'列)。我必须为每行源数据文件添加一个唯一的ID,否则导入将不会通过。

是否有一个选项可以忽略源文件中的主键或在导入过程中自动增加它?

它已被设置为自动增量主键。

mysql> desc tablename; 
+--------------------+--------------+------+-----+---------+----------------+ 
| Field    | Type   | Null | Key | Default | Extra   | 
+--------------------+--------------+------+-----+---------+----------------+ 
| id     | int(11)  | NO | PRI | NULL | auto_increment | 
... 

回答

13

为什么不加载到具有自动增量主键的表中?

create table MyTable (
    id integer auto_increment primary key, 
    ... 
) 

您可以指定将在表名后加上进口的列:

LOAD DATA INFILE 'filename' INTO TABLE tablename (col1,col2,...); 

如果不指定ID列,MySQL不会从文件中读取它。

+0

创建表时它已经被设置为自动递增主键。 – jack 2009-11-01 12:24:57

+1

太棒了,它的工作原理。谢谢。 – jack 2009-11-01 12:32:08

+3

注意:列应位于任何字段/行/列终止符/括号声明之后。 – 2013-05-09 20:20:41