SQL唯一更新

时间:2014-11-26 01:49:14

标签: sql sql-server database csv

我有一个文件,每15分钟更新一次销售数据。这些文件是MTD,截至上午8点,它每天都会完成。它是一个每15分钟写入SP的平面文本CSV。这就是说我想将条目添加到基于长期存储的SQL数据中。问题是如果我继续添加表,我继续得到重复。每天最多1500个条目。我是SQL的新手,所以最简单的解决方案比潜在的性能损失更受欢迎,直到我得到一些SQL。

我有SQL 2014和SSIS。任何指针或帮助将不胜感激。我读了一些其他帖子,但我找不到任何帮助这个具体问题。

我该怎么做?

1 个答案:

答案 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合并到您的实际表格中。