6

私は、SQL Server 2012 サーバーで PDW AU5 を使用しています。データをロードしようとしている空のレプリケート テーブルがあります。2 つのレコードのみをロードしています。だから、私はやっています:

INSERT INTO dbo.some_table
(Col1, Col2, Col3)
VALUES
(1, 'x', 'a'),
(2, 'y', 'b')

オンラインの本から、これはうまくいくはずです。(SMP で動作します。)ただし、PDW は次のエラーをスローします。Parse error at line: 4, column: x: Incorrect syntax near ','.

このエラーが参照しているコンマは、最初のタプルの後のコンマです。私は何を間違っていますか?INSERT INTO を介して複数の行を挿入することは AU5 では許可されていませんか?

4

2 に答える 2

12

MSDN のドキュメントには、Parallel Data Warehouse と Azure SQL Data Warehouse は、残念ながら複数のタプルINSERT INTOを決定的にサポートしていない通常の SQL Server と比較して、挿入に異なる構文を使用することが記載されています: https://msdn.microsoft.com/en-us/library /ms174335.aspxVALUES

-- 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 ] ) ]
[;]

ただし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'

(最後の行には式がありませんUNION ALL)

于 2016-03-21T20:42:40.843 に答える