Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

BULK INSERT da stringa delimitata da virgole

Non sono sicuro che ci sia un modo diretto per farlo in T-SQL , ma se vuoi usare Bulk Insert puoi usare sqlcmd per esportare in un file CSV e quindi importare nuovamente il file nel server utilizzando l'inserimento collettivo.

Crea un dbo.Split Functionm, puoi fare riferimento qui dividi la stringa in più record Ci sono un sacco di buoni esempi.

se vuoi eseguire come processo batch, puoi eseguire sqlcmd e "Inserimento collettivo"

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'
)

Altrimenti, puoi manipolare direttamente in T-SQL, ma dato che hai la stessa definizione di identificazione delle colonne.

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