Saya mencoba mengimpor file csv ke tabel SQLite.
Contoh csv:
1,2
5,6
2,7
Contoh perintah:
sqlite> create table foo(a, b);
sqlite> .separator ,
sqlite> .import test.csv foo
Error: test.csv line 1: expected 2 columns of data but found 4
Saya bahkan tidak yakin mengapa ia menemukan empat kolom dengan enam bagian data dan dua kolom.
6 - 2 = 4
\r\n
di Windows,\n
di * nix (termasuk Mac yang lebih baru),\r
di Mac yang lebih lama.Jawaban:
Apa yang juga dikatakan di komentar, SQLite melihat masukan Anda sebagai 1, 25, 62, 7. Saya juga memiliki masalah dengan, dan dalam kasus saya itu diselesaikan dengan mengubah "pemisah," menjadi ".mode csv". Jadi Anda bisa mencoba:
Perintah pertama membuat nama kolom untuk tabel. Namun, jika Anda ingin nama kolom diwarisi dari file csv, Anda mungkin mengabaikan baris pertama.
sumber
create table
perintah pertama dan sqlite akan menggunakan nama kolom dari file csv.Year,Make,Model,Description,Price
dan bukan data sebenarnya. Jika demikian halnya dengan file CSV Anda, maka Anda tidak perlu membuat tabel secara manual menggunakancreate table
perintah. The.import
perintah akan menggunakan baris pertama dalam file Anda untuk menentukan nama kolom dan membuat tabel yang sesuai. Anda masih harus memasukkan nama tabel di perintah. Info yang sama dari dokumen SQLite ..mode
? Bukankah itu hanya untuk keluaran?type
untuk nama kolom CSV.Begini cara saya melakukannya.
Masukkan shell sqlite dari db tempat data perlu ditambahkan
sqlite> .separator "\t" ---IMPORTANT! should be in double quotes sqlite> .import afile.csv tablename-to-import-to
sumber
.separator "\t" "\r"
Saya menggabungkan info dari jawaban sebelumnya di sini dengan pengalaman saya sendiri. Cara termudah adalah dengan menambahkan header tabel yang dipisahkan koma langsung ke file csv Anda, diikuti dengan baris baru, lalu semua data csv Anda.
Jika Anda tidak pernah melakukan hal-hal sqlite lagi (seperti saya), ini mungkin menghemat satu atau dua pencarian web:
Di shell Sqlite masukkan:
Jika Anda belum menginstal Sqlite di Mac Anda, jalankan
Anda mungkin perlu melakukan satu pencarian web untuk mengetahui cara menginstal Homebrew.
sumber
unescaped " character
peringatan?sebelum perintah .import, ketik ".mode csv"
sumber
Bagaimana cara mengimpor file csv ke sqlite3
Buat database
Atur mode & nama tab
Impor data file csv ke sqlite3
Temukan tabel
Temukan skema tabel Anda
Temukan data tabel
Hitung jumlah baris dalam tabel
sumber
Dengan Termsql Anda dapat melakukannya dalam satu baris:
termsql -i mycsvfile.CSV -d ',' -c 'a,b' -t 'foo' -o mynewdatabase.db
sumber
Saya memiliki masalah yang persis sama (di OS X Maverics 10.9.1 dengan SQLite3 3.7.13, tapi menurut saya SQLite tidak terkait dengan penyebabnya). Saya mencoba mengimpor data csv yang disimpan dari MS Excel 2011, yang btw. digunakan
';'
sebagai pemisah kolom. Saya menemukan bahwa file csv dari Excel masih menggunakan karakter baris baru dari Mac OS 9 kali, mengubahnya menjadi unix baris baru memecahkan masalah. AFAIR BBEdit memiliki perintah untuk ini, serta Sublime Text 2.sumber
tr -s '\r' '\n'
dan itu akan berfungsi dengan semua jenis file acak.Ikuti langkah-langkahnya: -
sumber
Seperti yang ditentukan beberapa situs web dan artikel lain, tampilan sederhananya untuk yang satu ini. https://www.sqlitetutorial.net/sqlite-import-csv/
Kita tidak perlu menentukan separator untuk
csv
file, karena csv artinya dipisahkan dengan koma.sqlite> .separator ,
tidak perlu baris ini.Ini akan bekerja dengan sempurna :)
PS: Kota saya.csv dengan header.
sumber
.save someFileName
pada akhirnya. Butuh waktu berjam-jam untuk menemukan ini untuk akhirnya mengekspor ini dalam file basis data memori ke disk 😅