【问题标题】:How do I import tables from another database in sqlite?如何在 sqlite 中从另一个数据库导入表?
【发布时间】:2016-10-02 13:03:01
【问题描述】:

我有一个名为 database1 的 SQLite 数据库和一个名为 t1 的表和一个名为 database2 的表 t2。我想将表t2database2 导入database1。我应该使用什么命令?

【问题讨论】:

标签: sqlite


【解决方案1】:

使用sqlite3 command-line tool 打开database2 并使用命令.schema t2 读取表定义。 (或者,使用任何其他允许读取表定义的工具。)

然后用命令打开database1attach另一个数据库:

ATTACH 'database2file' AS db2;

然后创建表t2,并将数据复制过来:

INSERT INTO t2 SELECT * FROM db2.t2;

【讨论】:

    【解决方案2】:

    外壳命令:

    sqlite3 database1
    

    在 SQLite 外壳中:

    sqlite> ATTACH 'database2' AS db2;
    sqlite> CREATE TABLE t1 AS SELECT * FROM db2.t2;
    

    【讨论】:

      【解决方案3】:

      您可以使用 sqlite3 .dump 命令将转储输出通过管道传输到另一个数据库。它接受一个带有表名的可选参数。

      db1=~/mydb1.sqlite 
      db2=~/mydb2.sqlite
      t=t2
      
      sqlite3 "$db2" ".dump $t" | sqlite3 "$db1"
      

      如果两个数据库都没有公用表,可以省略表名,复制所有表。

      如果表很大,这可能会很慢,因为它会执行 INSERT。如果它们很大,而且真的太慢,也许.import 会更快。您可以尝试类似

      sqlite3 "$db2" ".schema $t" | sqlite3 "$db1"
      sqlite3 "$db2" "SELECT * FROM $t" | sqlite3 "$db1" ".import /dev/stdin $t"
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-03-31
        • 2014-06-09
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多