如何在mysql中加载数据INFILE,第一个col是自动增量?

时间:2011-05-16 12:01:24

标签: mysql sql

目前,我们有一个类似于此的表:

---------------------
ID | AField | BField|
---------------------

ID为自动增量

如何创建一个CSV,让数据库自动使用自动增量编号填充ID字段?

我们尝试了以下CSV但不起作用:

afieldvalue, bfieldvalue (With Column definition but still doesn't work)
0,afieldvalue,bfieldvalue 
NULL,afieldvalue,bfieldvalue

7 个答案:

答案 0 :(得分:46)

最好的办法是在CSV中包含2个非自动增量列,然后在加载数据infile语句中将ID列显式设置为NULL。

这样的事情:

LOAD DATA INFILE '/tmp/data.csv'
INTO TABLE your_table
FIELDS TERMINATED BY ','
(AField, BField)
SET ID = NULL;

答案 1 :(得分:5)

你可以"省略"通过在行的开头放置分隔符符号来标识数据行中的ID字段,例如(对于表格的模式ID,AField,BField):

,afieldvalue,bfieldvalue
...

SQL引擎会在读取此类csv文件时将NULL分配给ID字段

答案 2 :(得分:1)

尝试使用NULL作为ID字段的csv文件中的值。

答案 3 :(得分:1)

LOAD DATA INFILE' /tmp/data.csv' INTO TABLE your_table FIELDS终止于','由' \ r'终止的线路 (AField,BField);

答案 4 :(得分:0)

CSV文件中的

NULL在MySQL中被读取为STRING。如果要在MySQL列中使用空值,请使用\N代替“NULL”。这将解决问题,您将获得所需的结果。

答案 5 :(得分:0)

如果您只有少量列,则可以命名它们: <textField bookmarkLevel="1"> <reportElement x="0" y="0" width="100" height="20"/> <textElement lineSpacing="Single"/> <textFieldExpression class="java.lang.String"><![CDATA[$F{FIELD_NAME}]]></textFieldExpression> <anchorNameExpression><![CDATA[$F{FIELD_NAME}]]></anchorNameExpression> </textField> (假设只有ID&amp; AField)

答案 6 :(得分:-1)

LINES TERMINATED BY '\r\n' 

使用文本文件时,这是我成功的关键