gpt4 book ai didi

sqlite - 转储没有自动生成的列的SQLite表/数据库(例如ID)

转载 作者:行者123 更新时间:2023-12-03 15:40:04 24 4
gpt4 key购买 nike

我有一个SQLite 3数据库(db),如以下简化示例所示:

CREATE TABLE user(id integer primary key, name text);
INSERT INTO "user" VALUES(1,'user1');
INSERT INTO "user" VALUES(2,'user2');


如果输入 .dump,sqlite将把这些语句包装在一个事务中,并将它们写到先前用 db.sql定义的文件 .output中。如果我需要将数据导入到一个空的数据库中,这很好。

我希望能够将用户数据导入到定义了其他用户的其他数据库中。如果尝试,我很可能会得到如下信息(因为ID可能已经在目标数据库中使用了):

Error: near line 4: PRIMARY KEY must be unique
Error: near line 5: PRIMARY KEY must be unique


我的方法:


我可以手动调整转储的SQL,以删除除插入项之外的所有内容,还可以删除语句中的 id列(仅提及 name),但是这种方法无法扩展,因为我想实现流程的自动化。
我可以从数据库中选择并自己编写SQL。


我缺少任何简单或更优雅的方法吗? sqlite3将在现实世界中的Bash脚本中运行。

最佳答案

您可以自动进行调整(但这仍然需要您了解表结构):

$ (echo ".mode insert"; echo "SELECT name FROM user;") | \
sqlite3 my.db | \
sed -e 's/^INSERT INTO table /INSERT INTO user(name) /'
INSERT INTO user(name) VALUES('user1');
INSERT INTO user(name) VALUES('user2');

关于sqlite - 转储没有自动生成的列的SQLite表/数据库(例如ID),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33410334/

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