このような 2 つの単純な CSV ファイルがあります。どちらも非常に単純で、同じ形式です。
NAME,NUMBER
abcd,1
qwerty,2
oiujkl,5
csv1 と csv2 は同じ名前が多いですが、csv1 だけ、csv2 だけにしか存在しない名前もあります。csv1 と csv2 の数値、たとえば 1,2,3,4,5,6... は両方のファイルに存在しますが、各ファイルには 1 回だけ存在します。
「name,number-from-csv1,number-from-csv2」の形式で、両方のファイルを 1 つの SQLite データベースにインポートしたいと考えています。それはとても簡単に聞こえますが、私はそれを機能させることができません。最後に、私はそのようなテーブルを取得したい:
NAME,NUMBER-FROM-CSV1,NUMBER-FROM-CSV2
abcd,1,1
qwerty,2,5
oiujkl,5,10
lkjsie,,99
wero,234,
SQLロジックがありません:(次のようにSQLiteテーブルを作成しました:
CREATE TABLE IF NOT EXISTS testdb (name TEXT PRIMARY KEY, number-from-csv1 INTEGER UNIQUE, number-from-csv2 INTEGER UNIQUE)
私のシェルスクリプトは次のようになります。
while IFS=',' read -r name number-from-csv1; do
echo "INSERT INTO testdb (name, number-from-csv1) VALUES('$name', '$number-from-csv1');"
done < file1.csv
私はこのスクリプトを「./import.sh | sqlite3 asinfo.sqlite」のように呼んでいます。これは、1 つのファイルをインポートする場合に問題なく機能します。「1」を「2」に変更して file2 をインポートすると、file1 にリストされていない名前のみがインポートされます。次に、この SQL クエリを実行しようとしました。
UPDATE testdb SET number-from-csv2='$number-from-csv2' WHERE name='$name';
しかし、それはうまくいきません。何か案は?