sqlite3将多个数据库合并为1

时间:2019-03-01 03:26:01

标签: database bash shell sqlite

我创建了1000个.db文件,这些文件具有相同的表但具有不同的记录。我正在尝试获取其中的所有记录并将它们插入单个数据库:

for i in {0..1099}; do
sqlite3 .dump $i.db | sqlite3 results.db
done;

但是,会产生以下错误:

 Error: unrecognized token: "0.db"
 Error: unrecognized token: "1.db"
 etc.

1 个答案:

答案 0 :(得分:1)

您有2个问题

  1. 该命令应该是db之后的第二个参数
  2. 第二个文件将失败,因为表是由第一个文件创建的

然后,您可以执行此操作

for d in {0..1000}.db
do
    sqlite3 "$d" .dump
done | sed 's@\(CREATE TABLE\)\(.*\);@\1 IF NOT EXISTS \2;@' | sqlite3 results.db

如果不存在则创建表。