我有一个问题,我确信之前已被问过,但我不知道这个问题的术语。 (因此,我试图在此搜索这个问题的答案,但没有运气。)
我在SQL Server Management Studio 2008上。我有一个由导入平面文件创建的表。在每个月的开始,我想用给定平面文件的新版本更新此表。平面文件/表格上的标题将始终保持不变,以前不会丢失任何记录。以前记录的数据可能会发生变化,并且会包含新记录。
每个月这样做的最佳方式是什么?现在,我的解决方案是删除当前表并通过导入新的平面文件重新创建它。 (或者,我可以运行截断,然后重新导入。)
答案 0 :(得分:1)
更快的方法之一是删除所有索引,截断,重新导入和重新创建所有索引。请注意,对于平面文件,您可以使用SSIS
自动执行,或者可以使用BULK INSERT
作为作业计划。例如,如果文件每个月位于同一位置,并且所有分隔符和详细信息都相同,那么TSQL
脚本BULK INSERT MonthlyTable
FROM 'C:\MonthlyFileDrop\MonthlyFile.txt'
WITH (
FIELDTERMINATOR = ','
,ROWTERMINATOR = '0x0a'
,FIRSTROW=2
)
脚本{{1}}该文件在作业调用时将起作用按月计划。
{{1}}
另一种方法(我不偏袒的方法)是将数据插入阶段表,比较临时表中现有表中没有的数据,填充这些数据,然后重新索引现有数据表并删除临时表。