将数据从一个表移动到多个表的有效方法

时间:2017-03-10 15:45:17

标签: sql sql-server

我有TableA,它有数百万条记录和40列。

我想动议:
- 列1-30列于表B中 - 列31-40列入表C

This multiple Insert question显示我将如何假设我应该这样做  INSERT INTO TableB (col1, col2, ...) SELECT c1, c2,... FROM TableA...

我想知道是否有不同/更快的方法可以传递数据。本质上,我不想等待一个表在另一个Insert语句开始执行之前完成Insert处理

1 个答案:

答案 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会话,每个会话都运行自己的脚本。