GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana Cara Memasukkan Data Csv Ke Tabel Sqlite Melalui Pipa Shell?

Saya telah menulis sebuah program yang menampilkan hasil ke output standar dalam bentuk CSV murni yang ketat (setiap baris mewakili satu catatan dan berisi kumpulan bidang yang dipisahkan koma yang sama, bidang hanya berisi huruf kecil, angka dan titik bahasa Inggris, tanpa spasi, tidak ada tanda kutip dan tidak ada simbol yang mungkin perlu diloloskan/dikodekan).

Bagaimana cara mengarahkan output ini ke tabel SQLite yang cocok dengan sempurna?

Akan sangat bagus jika saya dapat mengontrol apakah saya ingin pemecahan batasan (misalnya memiliki kunci primer/sekunder yang sama dengan catatan yang sudah ada di tabel) mengganti catatan yang ada atau dibuang secara diam-diam.

Tentu saja saya mungkin membangun dukungan output database SQLite langsung dalam program itu sendiri, tetapi saya lebih suka menggunakan cara unix jika memungkinkan.

Jawaban yang Diterima:

Dua pendekatan:

Contoh test.csv berkas:

GroupName,Groupcode,GroupOwner,GroupCategoryID 
System Administrators,sysadmin,13456,100
Independence High Teachers,HS Teachers,,101
John Glenn Middle Teachers,MS Teachers,13458,102
Liberty Elementary Teachers,Elem Teachers,13559,103
1st Grade Teachers,1stgrade,,104
2nd Grade Teachers,2nsgrade,13561,105
3rd Grade Teachers,3rdgrade,13562,106
Guidance Department,guidance,,107

1 ) Dengan csvkit (seperangkat alat baris perintah untuk mengonversi dan bekerja dengan CSV)

Impor ke sqlite3 basis data:

csvsql --db sqlite:///test_db --tables test_tbl --insert test.csv

Jika tidak ada file csv input yang ditentukan, itu akan menerima data csv dari stdin:

... | csvsql --db sqlite:///test_db --tables test_tbl --insert

Untuk mengekstrak data dari sqlite basis data:

sql2csv --db sqlite:///test_db --query 'select * from test_tbl limit 3'

Keluaran:

GroupName,Groupcode,GroupOwner,GroupCategoryID 
System Administrators,sysadmin,13456,100
Independence High Teachers,HS Teachers,,101
John Glenn Middle Teachers,MS Teachers,13458,102

2 ) Dengan sqlite3 alat baris perintah (memungkinkan pengguna untuk memasukkan dan mengeksekusi pernyataan SQL secara manual terhadap SQLite basis data)

Gunakan “.import ” perintah untuk mengimpor data CSV (comma Separated Value)
ke dalam tabel SQLite. “.import Perintah ” mengambil dua argumen yang
adalah nama file disk dari mana data CSV akan dibaca dan
nama tabel SQLite tempat data CSV akan
dimasukkan.

Perhatikan bahwa penting untuk menyetel “mode” ke “csv” sebelum menjalankan
.import " memerintah. Ini diperlukan untuk mencegah shell
baris perintah mencoba menafsirkan teks file input sebagai format
lainnya.

$ sqlite3
sqlite> .mode csv
sqlite> .import test.csv test_tbl
sqlite> select GroupName,Groupcode from test_tbl limit 5;
"System Administrators",sysadmin
"Independence High Teachers","HS Teachers"
"John Glenn Middle Teachers","MS Teachers"
"Liberty Elementary Teachers","Elem Teachers"
"1st Grade Teachers",1stgrade
sqlite> 

Linux
  1. Bagaimana Cara Melewati Argumen Baris Perintah Menjadi Skrip Shell?

  2. Bagaimana Cara Menambahkan Data Ke Buffer Dalam Script Shell?

  3. Cara mengirim paket multicast melalui antarmuka khusus di Linux

  1. Bagaimana cara memasukkan karakter tab di Iterm?

  2. Cara memindahkan semua file termasuk file tersembunyi ke direktori induk melalui *

  3. Bagaimana saya memulai di bash ketika ssh'ing ke server saya?

  1. Cara Mem-boot Tamu KVM ke dalam shell Penyelamatan

  2. Baca nilai ke dalam variabel shell dari pipa

  3. Bagaimana cara menyisipkan baris baru di skrip shell Linux?