gpt4 book ai didi

sql - 通过 shellscript 将 CSV 导入 SQLite,主键问题和重复数据

转载 作者:行者123 更新时间:2023-12-03 17:59:20 25 4
gpt4 key购买 nike

我有两个像这样的简单 CSV 文件,它们都非常简单且格式相同:

NAME,NUMBER
abcd,1
qwerty,2
oiujkl,5

csv1 和 csv2 中的许多名称是相同的,但也有仅存在于 csv1 或仅存在于 csv2 中的名称。 csv1 和 csv2 中的数字,例如1,2,3,4,5,6... 存在于两个文件中,但在每个文件中只存在一次。

我想将这两个文件以“name,number-from-csv1,number-from-csv2”的格式导入到一个 SQLite db。这听起来很简单,但我无法让它工作。最后我想得到这样一张 table :
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)

我的 shell 脚本如下所示:
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”更改为“2”来导入 file2,它只会导入 file1 中未列出的名称。然后我尝试运行这个 SQL 查询:
UPDATE testdb SET number-from-csv2='$number-from-csv2' WHERE name='$name';

但这不起作用。有任何想法吗?

最佳答案

考虑将每种文件类型上传到自己的表中。然后使用连接或 View 来生成您想要的表。

将数据从 csv1 上传到名为 t1 的表中。 t1 具有名称和值列。将 csv2 上传到 t2。 t2 具有列名称和值。

现在做类似的事情

select t1.name, t1.value v1, t2.value v2
from t1
join t2 on t1.name = t2.name
order by name;

您可以从此查询创建 View 。

关于sql - 通过 shellscript 将 CSV 导入 SQLite,主键问题和重复数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12847340/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com