Tôi đang cố gắng tạo bảng trong sqlite lấy dữ liệu từ tệp csv và thêm khóa chính tự động tăng lên vào cột đầu tiên. Dưới đây là bảng tôi đang cố gắng để chèn dữ liệu vào:Nhập csv vào sqlite với autoincrementing khóa chính
DROP TABLE IF EXISTS Allegiance;
CREATE TABLE Allegiance (
AllegianceID INTEGER PRIMARY KEY AUTOINCREMENT,
CharacterID INTEGER,
Title TEXT,
FOREIGN KEY (CharacterID) REFERENCES Characters(CharacterID));
Dưới đây là các dữ liệu trong tập tin .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
Đây là lỗi tôi nhận được:
sqlite> .mode csv
sqlite> import allegiances.csv Allegiance;
Error: datatype mismatch
Tôi nhận được lỗi tương tự nếu tôi có "null" trước dấu phẩy đầu tiên trong mỗi dòng. Khi tôi thêm các số ngẫu nhiên trước dấu phẩy đầu tiên trong mỗi dòng, tôi không nhận được bất kỳ lỗi nào. Tuy nhiên, tập dữ liệu thực tế tôi cần làm việc có thể lớn hơn nhiều và do đó, tôi không thể chỉ cần thêm thủ công khóa chính duy nhất cho mỗi mục nhập. Tôi thực sự đánh giá cao một số trợ giúp với điều này
Nếu bạn đang sử dụng phần mềm của bên thứ ba, bạn có thể có tùy chọn để thiết lập các văn bản đại diện cho giá trị NULL trong của bạn tệp csv. SQLiteStudio là một trong những chương trình đó. – Vassilis
@VassilisGr Bạn ngụ ý gì bởi văn bản đại diện cho giá trị NULL? – pouya
@pouya, nếu bạn có tệp csv có hàng giống như 'pouya, 26, NULL', bạn có thể đặt giá trị NULL trong tệp csv của bạn được biểu thị bằng chuỗi "NULL". Trong trường hợp 'pouya, 26,' bạn sẽ đặt NULL là "" (chuỗi rỗng). Hoặc 'pouya, 26, 0' NULL là" 0 "trong tệp csv! – Vassilis