Импорт csv в sqlite с автоматическим инициализацией первичного ключа
Я пытаюсь создать таблицу в 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
Я получаю ту же ошибку, если у меня есть "нуль" до первой запятой в каждой строке.
Когда я добавляю случайные числа до первой запятой в каждой строке, я не получаю никаких ошибок. Однако фактический набор данных, с которым мне нужно работать, может быть намного больше, и поэтому я не могу просто вручную добавить уникальный первичный ключ для каждой записи. Я бы очень признателен за помощь в этом
Ответы
Ответ 1
Пустое поле в CSV файле - это просто пустая строка, которая недопустима для столбца INTEGER PRIMARY KEY
.
Импортируйте во временную таблицу без этого столбца, затем скопируйте данные с помощью:
INSERT INTO Allegiance(CharacterID, Title) SELECT * FROM TempTable;