【问题标题】:SQLite copy data from one db to another using shell scriptSQLite 使用 shell 脚本将数据从一个数据库复制到另一个数据库
【发布时间】:2017-05-07 17:56:44
【问题描述】:

如何在一个 shell 脚本和脚本操作中附加两个 sqlite db 以及它们的别名?

例如:从 sqlite3 shell 我可以附加两个不同的数据库,比如说 db1 和 db2,然后使用: 插入 db2.table1(column1) 从 db1.table1 中选择 column1; 将一列从 db1 上的特定表复制到 db2 上的特定表。 但是,我如何在 shell 脚本中做同样的事情?

【问题讨论】:

  • 你不知道如何构造SQL命令字符串,或者如何将它们交给sqlite3吗?
  • 我想我可以,我可以从 sqlite3 shell 完成我需要的一切,我也可以从 shell 脚本执行选择和插入,但我还没有找到如何从一个表中移动数据db,到另一个 db 上的表,所有这些都来自 shell 脚本。
  • 展示你所拥有的,以及你被困在哪里。
  • 我以为我做到了。
  • 我以为我做到了。让我看看我是否再解释一下,我在两个数据库上有同一个表,一个是填充数据,另一个是空的。我想将数据从一个表移动到另一个表(注意它们位于两个不同的 dbs 上),如果我从 sqlite3 shell 执行此操作,我将遵循以下顺序: 1- 将数据库“/database1.db”附加为“db1”; 2-附加数据库'/database2.db'作为'db2'; 3- .databases [这只是为了检查我有两个别名] 4- 插入 db2.table1(column1) select column1 from db1.table1;然后完成,我将db1上的所有数据复制到db2。如何在 shell 脚本上做同样的事情?

标签: sqlite scripting


【解决方案1】:

要为另一个程序的输入提供多行,您可以从临时文件或here document 重定向:

sqlite3 "" <<EndOfSqlite3Commands
ATTACH 'database1.db' AS db1;
ATTACH 'database2.db' AS db2;
INSERT INTO db2.table1(column1) SELECT column1 FROM db1.table1;
EndOfSqlite3Commands

【讨论】:

  • 错误:第 4 行附近:“EndOfSqlite3Commands”附近:语法错误
  • 我只是将您的建议放入脚本中,然后运行它。并得到了上面的错误
  • 我的错,我放了一个“;”最后,错误地。现在测试整个脚本。
猜你喜欢
  • 2021-08-08
  • 1970-01-01
  • 2014-03-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多