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.) INSERT
ing A_Table
到 Table B 使用 engine.connect().execute(text)
text("INSERT INTO B_Table (col1, col2) SELECT col1, col2 FROM A_Table")
2.) UPDATE
ing 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;
我想从 Table A --> Table B 插入 select 记录(在这个例子中,不同的“数据库” == 不同 tables 不要担心 ATTACH
),其中 Table A
的列少于 Table B
。还应填充附加的 B_Table
列 (col3
)。
我已经在 raw-SQL 中尝试过这个序列(通过 SQLAlch。):
1.) INSERT
ing A_Table
到 Table B 使用 engine.connect().execute(text)
text("INSERT INTO B_Table (col1, col2) SELECT col1, col2 FROM A_Table")
2.) UPDATE
ing 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;