如何在mysql中加载数据INFILE,第一个col是Auto Increment?

von4xj4u  于 2023-04-05  发布在  Mysql
关注(0)|答案(7)|浏览(135)

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

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

ID为自动增量
如何创建一个CSV,让数据库自动填充ID字段,并自动增加编号?
我们尝试了以下CSV,但它不起作用:

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

ikfrs5lh1#

最好的做法是在CSV中包含2个非自动递增列,然后在load data infile语句中显式地将ID列设置为NULL。
大概是这样的

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

fhity93d2#

你可以通过在数据行的开头放置分隔符符号来“省略”数据行中的ID字段,就像这样(对于表模式ID,AField,BField):

,afieldvalue,bfieldvalue
...

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

5q4ezhmt

5q4ezhmt3#

LOAD DATA INFILE '/tmp/data.csv'
INTO TABLE your_table
FIELDS TERMINATED BY ',' LINES TERMINATED BY '\r'
(AField, BField);
iszxjhcz

iszxjhcz4#

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

ikfrs5lh

ikfrs5lh5#

CSV文件中的NULL在MySQL中被读取为STRING。如果你想在MySQL列中有null值,请使用\N代替`NULL。这将解决这个问题,你将得到所需的结果。

8gsdolmq

8gsdolmq6#

如果只有少量的列,可以直接命名它们:LOAD DATA LOCAL INFILE 'myfile.txt' INTO TABLE mytable (AField);(仅假设ID和AField)

5anewei6

5anewei67#

LINES TERMINATED BY '\r\n'

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

相关问题