INSERT SQL 从一个数据库到第二个数据库的记录(其中 2nd 有一个附加列)

INSERT SQL records from one database to a second (where 2nd has an additional column)

我想从 Table A --> Table B 插入 select 记录(在这个例子中,不同的“数据库” == 不同 tables 不要担心 ATTACH),其中 Table A 的列少于 Table B。还应填充附加的 B_Table 列 (col3)。

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

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

text("INSERT INTO B_Table (col1, col2) SELECT col1, col2 FROM A_Table")

2.) UPDATEing B_Table w/ col3 带有 engine.connect()ion 的信息(所有新插入的记录都是 populated/updated w/相同的标识符,NewInfo)

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

更有效的选择?

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

将数据从一个 table 复制到另一个 w/out INSERT 然后 UPDATE 的更好方法是什么?我正在考虑:

1.) SQLAlchemy session.query(A_Table),但不确定如何编辑该对象(对于 col3)然后插入更新后的对象 w/out将所有 A_Table 查询的信息加载到 RAM 中(据我所知,raw-SQL 的 INSERT 不会这样做)。

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

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