添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

在SQLite中复制一个表的批发

0 人关注

我知道有人问过一个非常类似的问题 here .然而,我无法实现那里给出的解决方案:当我试图运行 ATTACH DATABASE 'other.db' AS other; 开头的脚本时我得到一个错误,说它无法连接到other.db,尽管该目录下有这样一个文件。

I've got 两个SQLite数据库 ,数据库_a.db和数据库_b.db。我想复制一个表,名为Table_to_be_copied,从数据库_a.db到数据库_b.db。Table_to_be_copied有 无模拟 或等同于数据库_b.db中的内容,以及 我不能假设任何事情 除了它的名字,我不能假设它有多少列,或者它们被称为什么。

我想复制Table_to_be_copied 批发 :名称、列和行。实现这一目标的最简单方法是什么?(值得一提的是,我是通过以下方式连接到数据库的 Python 脚本)。我知道一种复制表的方法,但它不是很优雅:它涉及到写一个脚本,从数据库_a.db中读取所有需要的数据到内存中,然后在数据库_b.db中从头开始重新创建表。但是有没有更好的方法呢?

5 个评论
替换代码0】去掉引号,用这个代替怎么样? ATTACH DATABASE other.db AS other;
@ChloroxBleach69 这是给我的东西。【替换代码0// At line 1: // 【替换代码2
@ChloroxBleach69 我是通过SQLite的DB浏览器运行脚本的,如果这有什么不同的话。(我倾向于通过上述浏览器运行脚本来试水。对于更正式的东西,我使用Python)。
嗯,试试c.execute("ATTACH DATABASE ?AS combined", ("other.db",))`。
@ChloroxBleach69 谢谢你的提示。经过一段时间的哭泣和咬牙切齿,我已经设法让它工作了。
python
sqlite
Tom Hosker
Tom Hosker
发布于 2020-07-07
1 个回答
Tom Hosker
Tom Hosker
发布于 2020-07-08
已采纳
0 人赞同

To the best of my knowledge, the shortest snippet of Python code for 复制一个SQLite表的批发 详见下文。

假设你想复制一个名为 平台_特定 from 数据库_a.db to 数据库_b.db . Then run:

import sqlite3
def create_local_specifics():
    connection = sqlite3.connect("database_b.db")
    cursor = connection.cursor()
    query0 = "DROP TABLE IF EXISTS Platform_Specifics;"
    query1 = ("CREATE TABLE Platform_Specifics\n"+
              "(\n"+
              "    specific TEXT,\n"+
              "    value TEXT,\n"+
              "    PRIMARY KEY(specific)\n"+
              ");")
    cursor.execute(query0)
    cursor.execute(query1)
    connection.commit()
    connection.close()
def transfer_local_specifics():
    connection = sqlite3.connect("database_a.db")
    cursor = connection.cursor()
    query0 = "ATTACH DATABASE 'database_b.db' AS other;"
    query1 = ("INSERT INTO other.Platform_Specifics "+
              "SELECT * FROM Platform_Specifics;")
    query2 = "DETACH other;"
    cursor.execute(query0)
    cursor.execute(query1)
    connection.commit()
    cursor.execute(query2)
    connection.commit()
    connection.close()
def copy_local_specifics():
    create_local_specifics()
    transfer_local_specifics()