Próbuję utworzyć tabelę w sqlite, która pobiera dane z pliku csv i dodaje automatycznie klucz główny do pierwszej kolumny. Oto tabela Próbuję wstawić dane do:Importowanie CSV do sqlite z autodestrukcyjnym kluczem podstawowym
DROP TABLE IF EXISTS Allegiance;
CREATE TABLE Allegiance (
AllegianceID INTEGER PRIMARY KEY AUTOINCREMENT,
CharacterID INTEGER,
Title TEXT,
FOREIGN KEY (CharacterID) REFERENCES Characters(CharacterID));
Oto dane w pliku 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
Jest to błąd I odbieranie:
sqlite> .mode csv
sqlite> import allegiances.csv Allegiance;
Error: datatype mismatch
Ten sam błąd pojawia się, jeśli mam "zerowy" przed pierwszym przecinkiem w każdym wierszu. Kiedy dodaję liczby losowe przed pierwszym przecinkiem w każdym wierszu, nie otrzymuję żadnych błędów. Jednak rzeczywisty zestaw danych, z którym muszę pracować, może być znacznie większy i dlatego nie mogę po prostu ręcznie dodać unikalnego klucza podstawowego dla każdego wpisu. Naprawdę doceniam pomoc z tym
Jeśli używasz programów osób trzecich, może masz możliwość ustalenia tekstu, który reprezentuje wartość NULL w twojej plik csv. SQLiteStudio to jeden z tych programów. – Vassilis
@VassilisGr Co masz na myśli przez tekst, który reprezentuje wartość NULL? – pouya
@pouya, jeśli masz plik csv, że wiersz jest jak 'pouya, 26, NULL', możesz ustawić, że wartość NULL w pliku csv jest reprezentowana przez ciąg" NULL ". W przypadku 'pouya, 26,,' ustawiasz NULL jest "" (pusty ciąg). Lub 'pouya, 26, 0' NULL jest" 0 "w pliku csv! – Vassilis