【发布时间】:2013-04-06 07:56:26
【问题描述】:
我正在尝试在 sqlite 中创建一个表,该表从 csv 文件中获取数据并将自动递增的主键添加到第一列。 这是我要向其中插入数据的表:
DROP TABLE IF EXISTS Allegiance;
CREATE TABLE Allegiance (
AllegianceID INTEGER PRIMARY KEY AUTOINCREMENT,
CharacterID INTEGER,
Title TEXT,
FOREIGN KEY (CharacterID) REFERENCES Characters(CharacterID));
这是 .csv 文件中的数据
, 3, King of the North
, 14, King of the Andals and the First Men
, 15, Lord of Dragonstone
, 26, Khaleesi
, 35, Lord Reaper of Pyke
这是我收到的错误:
sqlite> .mode csv
sqlite> import allegiances.csv Allegiance;
Error: datatype mismatch
如果我在每行的第一个逗号之前有“null”,我会收到相同的错误。 当我在每行的第一个逗号之前添加随机数时,我没有收到任何错误。但是,我需要使用的实际数据集可能要大得多,因此,我不能简单地为每个条目手动添加唯一的主键。我真的很感谢一些帮助
【问题讨论】:
-
如果您使用第三方程序,您可以选择在 csv 文件中设置代表 NULL 值的文本。 SQLiteStudio 就是其中之一。
-
@VassilisGr 代表 NULL 值的文本是什么意思?
-
@pouya,如果你有一个csv文件,其中一行是
pouya, 26, NULL,你可以设置你的csv文件中的NULL值用“NULL”字符串表示。在pouya, 26,,的情况下,您将设置NULL 为“”(空字符串)。或者pouya, 26, 0CSV 文件中的NULL 为“0”! -
@VassilisGr 那么 SQLiteStudio 或任何其他软件如何在 csv 文件中定义 NULL 值?
-
@pouya,是 string to db specific 和 db specific to string 的问题,其中 string 是空字符串表示形式,它可以是“NULL”,或者我提到的空字符串。它应该是此类应用程序中的用户偏好。就是这样。