我有一个文件,每15分钟更新一次销售数据。这些文件是MTD,截至上午8点,它每天都会完成。它是一个每15分钟写入SP的平面文本CSV。这就是说我想将条目添加到基于长期存储的SQL数据中。问题是如果我继续添加表,我继续得到重复。每天最多1500个条目。我是SQL的新手,所以最简单的解决方案比潜在的性能损失更受欢迎,直到我得到一些SQL。
我有SQL 2014和SSIS。任何指针或帮助将不胜感激。我读了一些其他帖子,但我找不到任何帮助这个具体问题。
我该怎么做?
答案 0 :(得分:0)
如果您要每天将条目附加到CSV,您可以随时截断表格和批量插入。
不是更新,而是截断和插入更快更有效。
TRUNCATE table myTable
BULK
INSERT myTable
FROM 'c:\csvtest.txt'
WITH
(
FIRSTROW = 2, -- in case your csv file has header, other wise you can remove this.
FIELDTERMINATOR = ',',
ROWTERMINATOR = '\n'
)
GO
最好每天都有一个单独的CSV文件,这样处理速度会更快,如果是单个CSV文件,它可能会在一段时间后变得太大而无法处理。
在这种情况下,我们可以批量插入到临时表,然后合并到实际的表。
IF (OBJECT_ID('StagingData') IS NULL)
CREATE TABLE StagingData
(
abc int,
..
)
TRUNCATE table StagingData
BULK
INSERT StagingData
FROM 'c:\csvtest.txt'
WITH
(
FIRSTROW = 2,
FIELDTERMINATOR = ',',
ROWTERMINATOR = '\n'
)
GO
现在将此StagingData合并到您的实际表格中。