2017-12-01 1 views
1

Ich habe eine Tabelle mit ein paar tausend Zeilen. Der Einfachheit halber nehme ich an, dass es eine Spalte hat. Ich muss Einfügeanweisungen generieren, damit ich das woanders ausführen kann.GO-Separator für INSERT-Anweisungen im langen Skript hinzufügen

Ich benutze diese Abfrage:

select 
    'insert into #ids values (' + cast(ID as varchar) + ')' as SqlStr 
from MySourceTable 

Dies erzeugt die Insert-Anweisungen, aber wenn ich diese laufen bekomme ich Fehler, der nicht mehr als 1000 Zeilen in einem Batch ausgeführt werden kann.

Jetzt versuche ich GO auf jeder 1000. Reihe hinzuzufügen, aber ich möchte das nicht manuell tun.

Wie kann ich meine Abfrage ändern, um GO nach jeder 1000. Zeile hinzuzufügen?

+0

Neben erhalten zu können: Sie können 'insert' Anweisungen generieren, die mehrere Zeilen einfügen, z.B. 'fügen Sie die #Ids-Werte (1), (2), (4), (8);' ein und begrenzen Sie die Anzahl der Zeilen pro Insert. – HABO

Antwort

1

Sie können GO hinzufügen nach jeder 1000. Zeile unterhalb Abfrage mit

;with ct as (
    select 'insert into #ids values (' + cast(ID as varchar) + ')' as SqlStr 
     , row_number() over (order by LoanNum) as RN 
    from MySourceTable 
) 
select iif(RN % 1000 = 0, SqlStr + char(10) + 'go' + char(10), SqlStr) 
from ct 

Dieses einfach ein Line-Feed erzeugt Anweisung addiert.

Beachten Sie, dass Sie benötigen, um das Ergebnis zu wechseln, um Text, um die korrekte Ausgabe

+0

Das hat mir geholfen. Vielen Dank! –

Verwandte Themen