Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

BULK INSERT aus kommagetrennter Zeichenfolge

Ich bin mir nicht sicher, ob es in T-SQL einen direkten Weg gibt, aber wenn Sie Bulk Insert verwenden möchten, können Sie sqlcmd verwenden um in eine CSV-Datei zu exportieren und die Datei dann mit Masseneinfügung wieder in den Server zu importieren.

Erstellen Sie einen dbo.Split Functionm, können Sie hier verweisen String in mehrere Datensätze aufteilen Es gibt unzählige gute Beispiele.

Wenn Sie als Batch-Prozess ausführen möchten, können Sie sqlcmd ausführen und 'Masseneinfügung'

sqlcmd -S MyServer -d myDB -E -Q "select dbo.Split(col1) from SomeTable" 
       -o "MyData.csv" -h-1 -s"," -w 700

-s"," sets the column seperator to 

bulk insert destTable
from "MyData.csv"
with 
(
  FIELDTERMINATOR = ',',
  ROWTERMINATOR = '\n'
)

Andernfalls können Sie direkt in T-SQL manipulieren, aber vorausgesetzt, Sie haben die gleiche Identifikation der Spaltendefinition.

 INSERT INTO DestinationTable
 SELECT dbo.Split(col1) FROM SomeTable