【发布时间】:2019-10-07 04:50:37
【问题描述】:
我正在尝试导入包含大量数据的 CSV 文件。数据没有主键或唯一标识符,因此我创建了一个带有“id”字段的表,该字段是主键并自动递增。
假设该表具有三个字段 id、LastName 和 FirstName。我的 CSV 文件只有姓氏,名字。我收到一堆错误,说第 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 格式配合。
【问题讨论】:
-
请在问题正文中发布您的 csv 内容。您可能在行尾缺少逗号、特殊字符等单元格,或者可能没有使用 csv 文件而是另一个分隔符文件。
-
外来数据与基表的结构或约束不完全匹配是很常见的,这种情况下的典型做法是将数据加载到临时表中,然后移动它到基表中,并根据需要对其进行修改。
-
史密斯,约翰椰子,乔安,帕蒂
-
这是一个 CSV,我什至重新导出它以确定。我贴在上面。我什至去创建了第二个新的 csv 来测试并得到同样的错误:(
标签: sql database mariadb load-data-infile