我正在寻找一种更好的方法来尝试解决这个问题,因为我目前的解决方案非常耗时且效率低下。
我有许多文本文件都包含1列。
我使用BULK INSERT将该信息加载到SQL表中,但我希望能够从哪个文件中加载数据并将其填充到列中。
现有的工作流程是在文本编辑器中创建一系列BULK INSERT和UPDATE语句,然后依次运行它们,如下所示:
现有工作流程
CREATE TABLE #TEMP(MYDATA VARCHAR(MAX), FILENAME VARCHAR(MAX))
BULK INSERT #TEMP FROM 'C:\MYFILE_1.TXT' WITH (FORMATFILE = 'C:\FORMATFILE.FRM')
UPDATE #TEMP SET FILENAME = 'MYFILE_1.TXT' WHERE FILENAME IS NULL
BULK INSERT #TEMP FROM 'C:\MYFILE_2.TXT' WITH (FORMATFILE = 'C:\FORMATFILE.FRM')
UPDATE #TEMP SET FILENAME = 'MYFILE_2.TXT' WHERE FILENAME IS NULL
BULK INSERT #TEMP FROM 'C:\MYFILE_3.TXT' WITH (FORMATFILE = 'C:\FORMATFILE.FRM')
UPDATE #TEMP SET FILENAME = 'MYFILE_3.TXT' WHERE FILENAME IS NULL
这是一个非常糟糕的工作流程,并且越多越慢,越多的行插入到表中。
在进行BULK INSERT时,或者至少以更有效的方式,有没有人有办法做到这一点?
非常感谢
答案 0 :(得分:0)
与大多数问题一样,我确信有很多有效的方法可以做到这一点。但是,我会通过将文件名声明为变量,然后在批量插入中插入文件名来动态执行此操作。 这可能会有点复杂,并且可以使用Cursor Loop完成。
另一种选择是在txt文件中添加一个等于文件名的列。我相信这可以通过powershell等编写脚本。
我知道我的回答很模糊,如果你想要一些例子,请告诉我