Bir csv dosyasından veri alan ve ilk sütuna otomatik bir birincil anahtar ekleyen bir sqlite tablo oluşturmaya çalışıyorum. İşteAutoincrementing birincil anahtar ile sqlite içine csv alma
DROP TABLE IF EXISTS Allegiance;
CREATE TABLE Allegiance (
AllegianceID INTEGER PRIMARY KEY AUTOINCREMENT,
CharacterID INTEGER,
Title TEXT,
FOREIGN KEY (CharacterID) REFERENCES Characters(CharacterID));
ben alma hatası .csv dosyasına
, 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
Bu veriler edilir:
sqlite> .mode csv
sqlite> import allegiances.csv Allegiance;
Error: datatype mismatch
İşte veri eklemek çalışıyorum tablodur Her satırdaki ilk virgülden önce "boş" varsa aynı hatayı alıyorum. Her satırdaki ilk virgülden önce rasgele sayılar eklediğimde, herhangi bir hata almıyorum. Bununla birlikte, üzerinde çalışmam gereken gerçek veri kümesi çok daha büyük olabilir ve bu nedenle, her giriş için benzersiz bir birincil anahtara elle ekleyemiyorum. Bu
üçüncü taraf programları kullanıyorsanız, sen BOŞ değeri temsil metni belirleme olanağına sahip olabilirler sizin csv dosyası. SQLiteStudio bu programlardan biridir. – Vassilis
@VassilisGr NULL değerini temsil eden metinle ne demek istiyorsun? – pouya
@pouya, csv dosyasının bir satırında "pouya, 26, NULL" gibi varsa, csv dosyanızdaki NULL değerinin "NULL" dizesiyle temsil edileceğini ayarlayabilirsiniz. Pouya, 26, 'durumunda, NULL 'u" "(boş dizge) olarak ayarlarsınız. Veya 'pouya, 26, 0' NULL, csv dosyasında" 0 "dır! – Vassilis