Подтвердить что ты не робот

Импорт 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

Я получаю ту же ошибку, если у меня есть "нуль" до первой запятой в каждой строке. Когда я добавляю случайные числа до первой запятой в каждой строке, я не получаю никаких ошибок. Однако фактический набор данных, с которым мне нужно работать, может быть намного больше, и поэтому я не могу просто вручную добавить уникальный первичный ключ для каждой записи. Я бы очень признателен за помощь в этом

4b9b3361

Ответ 1

Пустое поле в CSV файле - это просто пустая строка, которая недопустима для столбца INTEGER PRIMARY KEY.

Импортируйте во временную таблицу без этого столбца, затем скопируйте данные с помощью:

INSERT INTO Allegiance(CharacterID, Title) SELECT * FROM TempTable;