2016-03-21 2 views
1

Je suis sur PDW AU5 avec les serveurs SQL Server 2012. J'ai une table répliquée vide dans laquelle j'essaie de charger des données. Je ne charge que 2 enregistrements. Donc, je fais:Comment insérer plusieurs lignes dans la table Parallel Data Warehouse de SQL Server

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

À partir des livres en ligne, cela devrait fonctionner. (Cela fonctionne sur SMP.) Toutefois, PDW génère une erreur indiquant: Parse error at line: 4, column: x: Incorrect syntax near ','.

La virgule à laquelle se réfère cette erreur est celle qui suit le premier tuple. Qu'est-ce que je fais de mal? L'insertion de plusieurs lignes via INSERT INTO n'est-elle pas autorisée sur AU5?

+0

Cela devrait fonctionner! J'ai utilisé ce modèle plusieurs fois. – FLICKER

Répondre

3

La documentation sur MSDN pour INSERT INTO indique que parallèle des données Warehous et SQL Azure Data Warehouse utilise une syntaxe différente pour les insertions par rapport à la normale SQL Server qui ne crucialement supporte pas plusieurs VALUES tuples malheureusement: https://msdn.microsoft.com/en-us/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 ]) ] 
[;] 

Cependant notez qu'il supporte la syntaxe de INSERT INTO [...] SELECT [..], de sorte que vous pouvez pirater comme ceci:

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' 

(La dernière ligne n'a pas UNION ALL expression)

+0

Je reçois une erreur 'syntaxe près de 'ALL'.' erreur –

+0

Oh, je l'ai eu, dernière rangée devrait aller sans« UNION ALL »et avec'; 'à la fin –

+1

@AlexeyStrakh Merci pour le conseil, je J'ai modifié ma réponse. – Dai