我正在尝试导入包含一堆数据的CSV文件。数据没有主键或唯一标识符,因此我创建了一个带有“ id”字段的表,该字段是主键并自动递增。
可以说该表具有三个字段id,LastName和FirstName。我的CSV文件仅包含LastName,FirstName。我收到一堆错误,说行X不包含所有列的数据。
我试图显式命名要添加的字段,以为自动增量将分配一个值,但在执行此操作时将不起作用:
LOAD DATA LOCAL INFILE '/path/insert.csv' INTO TABLE data (LastName, FirstName);
我遇到相同的错误,第X行不包含所有列的数据...
我试图通过以下方式将id显式设置为Null:
LOAD DATA LOCAL INFILE '/path/insert.csv' INTO TABLE data (id, LastName, FirstName)
SET id=null;
相同错误第X行未包含所有列的数据。我尝试过:
LOAD DATA LOCAL INFILE '/path/insert.csv' INTO TABLE data
FIELDS TERMINATED BY ',' LINES TERMINATED BY '/n' SET id=null;
当我这样做时,它将尝试获取CSV中的第一个值并将其分配给id字段,然后为第1行的“ id”列提供不正确的整数值。
如果我使用的CSV文件未包含表中的每个字段,如何将数据添加到表中?谢谢!
编辑:
以下是表格字段:
id | int(11) | NO | PRI | NULL | auto_increment
LastName | tinytext | YES | | NULL |
FirstName | tinytext | YES | | NULL |
这是CSV文件:
Smith,John
Coconut,Joe
Ann,Pattye
那些在差异行上,我无法使stackoverflow格式配合使用。
答案 0 :(得分:0)
您尝试过吗?
LOAD DATA LOCAL INFILE'/path/insert.csv'INTO TABLE data(NULL,LastName,FirstName);
答案 1 :(得分:0)
我从没有亲自使用过MariaDB,但是我使用过的大多数数据库都取决于您如何设置ID列。我将检查以确保将其标记为自动增量。通常,当您将其设置为此类并且将该字段留空以进行插入时,它将自动(显然)增加并为您添加数据。如果没有它,可能会出错。
答案 2 :(得分:0)
LOAD DATA LOCAL
INFILE '/path/insert.csv'
INTO TABLE data (@x, LastName, FirstName);
也就是说,将不需要的东西放到@variables
中。
该技术还提供了一种在实际存储之前以编程方式修改文本的方法。 (请参阅手册。)
另一种方法是构建一个表,该表具有一组与输入文件匹配的列。 LOAD
放入其中;然后使用INSERT ... SELECT ...
将内容复制到“真实”表中。这使您在将数据存储到实际位置之前具有更大的能力来调整数据。