【问题标题】:INSERT SQL records from one database to a second (where 2nd has an additional column)INSERT SQL 记录从一个数据库到第二个(其中 2nd 有一个附加列)
【发布时间】:2022-01-18 18:18:20
【问题描述】:

我想从表 A --> 表 B 中插入选择记录(在本例中,不同的“数据库”== 不同的表不必担心 ATTACH),其中 Table A 的列数少于Table B。额外的 B_Table 列 (col3) 也应该被填充。

我已经在 raw-SQL 中尝试过这个序列(通过 SQLAlch。):

1.) INSERTing A_Table 使用 engine.connect().execute(text)

进入表 B
text("INSERT INTO B_Table (col1, col2) SELECT col1, col2 FROM A_Table")

2.) UPDATEing B_Table w/ col3 带有 engine.connect()ion 的信息(所有新插入的记录都使用相同的标识符填充/更新,NewInfo

text("UPDATE B_Table SET col3 = NewInfo WHERE B_Table.ID >= %s" % (starting_ID#_of_INSERT'd_records))

更有效的选择?

但这是非常低效的。 UPDATE 单个列的时间是 INSERT 的 4 倍。这似乎应该是INSERT 时间的一小部分。我想将总时间减少到~只是插入时间。

在没有INSERTing 后跟UPDATE 的情况下,将数据从一个表复制到另一个表的更好方法是什么?我正在考虑:

1.) SQLAlchemy session.query(A_Table),但不确定如何编辑该对象(对于col3),然后插入更新的对象而不加载所有A_Table 查询信息到 RAM(我理解 raw-SQL 的 INSERT 不行)。

【问题讨论】:

  • NewInfo 是字符串文字还是标识符?
  • @forpas 抱歉,NewInfo 是一个字符串

标签: python sql sqlite sqlalchemy sql-insert


【解决方案1】:

您可以在SELECT 语句中使用'NewInfo' 作为字符串文字:

INSERT INTO B_Table (col1, col2, col3) 
SELECT col1, col2, 'NewInfo' 
FROM A_Table;

【讨论】:

    猜你喜欢
    • 2016-12-16
    • 1970-01-01
    • 2015-01-02
    • 2022-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-24
    • 1970-01-01
    相关资源
    最近更新 更多