Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

BULK INSERT à partir d'une chaîne délimitée par des virgules

Je ne sais pas s'il existe un moyen direct de le faire dans le T-SQL , mais si vous souhaitez utiliser Bulk Insert, vous pouvez utiliser sqlcmd pour exporter vers un fichier CSV, puis réimporter le fichier dans le serveur à l'aide de Bulk Insert.

Créer un dbo.Split Functionm, vous pouvez vous référer ici diviser la chaîne en plusieurs enregistrements Il y a des tonnes de bons exemples.

si vous souhaitez exécuter en tant que traitement par lots, vous pouvez exécuter sqlcmd et 'Insertion groupée'

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

Sinon, vous pouvez manipuler directement dans le T-SQL, mais étant donné que vous avez le même identifiant de définition de colonnes.

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