如何在SQL Server并行数据仓库表中插入多行

sky*_*e01 2 sql-server parallel-data-warehouse

我在带有SQL Server 2012服务器的PDW AU5上。我有一个空的复制表,我正在尝试将数据加载到其中。我只加载2条记录。所以,我在做:

INSERT INTO dbo.some_table
(Col1, Col2, Col3)
VALUES
(1, 'x', 'a'),
(2, 'y', 'b')
Run Code Online (Sandbox Code Playgroud)

从在线书籍中,这应该可行。(它适用于SMP。)但是,PDW引发错误,指出:Parse error at line: 4, column: x: Incorrect syntax near ','.

该错误所指的逗号是第一个元组之后的逗号。我究竟做错了什么?在AU5上不允许通过INSERT INTO插入多行吗?

Dai*_*Dai 6

MSDN上的文档INSERT INTO指出,与普通SQL Server相比,Parallel Data Warehous和Azure SQL Data Warehouse使用不同的语法进行插入,VALUES不幸的是,该SQL Server严重地不支持多个元组:https : //msdn.microsoft.com/zh-cn/library /ms174335.aspx

-- Azure SQL Data Warehouse and Parallel Data Warehouse
INSERT INTO [ database_name . [ schema_name ] . | schema_name . ] table_name 
    [ ( column_name [ ,...n ] ) ]
    { 
      VALUES ( { NULL | expression } [ ,...n ] )
      | SELECT <select_criteria>
    }
    [ OPTION ( <query_option> [ ,...n ] ) ]
[;]
Run Code Online (Sandbox Code Playgroud)

但是请注意,它确实支持INSERT INTO [...] SELECT [..]语法,因此您可以像这样修改它:

INSERT INTO foo ( x, y, z )
SELECT 1, 'x', 'a' UNION ALL
SELECT 2, 'y', 'b' UNION ALL
SELECT 3, 'z', 'c' UNION ALL
SELECT 4, 'a', 'd' UNION ALL
SELECT 5, 'b', 'e'
Run Code Online (Sandbox Code Playgroud)

(最后一行没有UNION ALL表达式)