我有TableA,它有数百万条记录和40列。
我想动议:
- 列1-30列于表B中
- 列31-40列入表C
This multiple Insert question显示我将如何假设我应该这样做
INSERT INTO TableB (col1, col2, ...)
SELECT c1, c2,...
FROM TableA...
我想知道是否有不同/更快的方法可以传递数据。本质上,我不想等待一个表在另一个Insert语句开始执行之前完成Insert处理
答案 0 :(得分:2)
我担心SQL标准中没有办法在INSERT ... SELECT结尾处拥有通常称为T结的东西。我很害怕,这是ETL工具的特权。但ETL工具连接两次到数据库,一次用于T结的每一段,结果两个INSERT INTO tab_x VALUES (?,?,?,?)
语句并行运行。
这让我想到了一个可能有意义的解决方案:
创建两个脚本。一个人INSERT INTO table_b1 SELECT col1,col2 FROM table_a;
。一个人INSERT INTO table_b2 SELECT col3,col4 FROM table_a;
。然后,作为它的SQL服务器,并行启动两个isql会话,每个会话都运行自己的脚本。