我有一个表,其中一列包含以下数据:
abc,2,2,34,5,3,2,34,32,2,3,2,2 def,2,2,34,5,3,2,34,32,2,3,2,2
我想获取这些数据并将其插入到另一个表中,使用逗号作为分隔符,就像您可以指定FIELDTERMINATOR in BULK INSERT声明。
FIELDTERMINATOR
BULK INSERT
有没有办法使用 T-SQL 来做到这一点?
我不确定 T-SQL 中是否有任何直接的方法,但如果你想使用批量插入,你可以使用sqlcmd导出到 CSV 文件,然后使用批量插入将文件导入回服务器。
sqlcmd
创建一个dbo.Split功能,可以参考这里将字符串拆分为多个记录 https://stackoverflow.com/questions/314824/t-sql-opposite-to-string-concatenation-how-to-split-string-into-multiple-reco有很多很好的例子。
dbo.Split
如果你想作为批处理执行,你可以执行sqlcmd和“批量插入”
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' )
否则,您可以直接在 T-SQL 中进行操作,但前提是您具有相同的列定义标识。
INSERT INTO DestinationTable SELECT dbo.Split(col1) FROM SomeTable