任务: 使用 SSMS 中的命令行将 YAML 文件导入到 SQL Server。 YAML 文件中没有 PK 或行号。
问题: 了解 BULK INSERT 不能保证保持源文件行顺序,是否有命令行选项可以做到这一点?或者是否有一个用于 BULK INSERT 的新开关将强制文本文件的物理行顺序?该解决方案需要在存储过程内部运行。
SET @exec_SQL = '
BULK INSERT dbo.tempGHfileImport
FROM ' + '''' + @localDrive + '\' + @loop_FullFileName + ''''
EXEC(@exec_SQL)
BULK INSERT 不保持源文件物理行顺序是一个已知问题。我还在 Cmd 窗口中测试了 bcp,但我无法判断当“在压力下”时,bcp 的行为是否类似于 BULK INSERT。
:: not an ideal solution as this is not SSMS
bcp databaseName.dbo.test1 IN G:\filePath\abc.yml -T -c
SSIS 可以工作,但我不想使用这个有点过时的解决方案。 数据工厂可能可以工作,但我的文件不在云存储中。 据我所知,Azure CLI 和 PowerShell 没有数据文件导入命令。
相关链接:
使用默认值 getdate() 创建一个附加的 datetime2(7) 列。接下来,在插入时,设置 BATCHSIZE 参数,每一行将作为单独的事务执行。这会降低效率和生产力,但您可以获取按日期排序的行顺序(以毫秒为单位)。