0

背景

我有一组 CSV 文件,每个文件都具有相同的数据结构。每个文件都是在给定的日历日生成的,例如,我可能有一个从 10/8/13 开始的文件有 20,000 条记录,一个文件从 10/9/13 开始有 50,000 条记录,依此类推。

所有这些 CSV 数据都需要导入到 SQL Server 表中,但我添加了一个列RecordDate,需要将其设置为记录生成日期的值。

总的来说,我有 14 个这样的 CSV 文件,所以我不介意运行 14 个像这样的批量插入操作:

BULK INSERT CSVTest
FROM 'c:\csvtest.txt'
WITH
(
FIELDTERMINATOR = ',',
ROWTERMINATOR = '\n'
)
GO

但是每次我这样做时,我都需要将该RecordDate列设置为我插入的特定 CSV 的生成日期。

问题

如何在批量插入 CSV 文件期间手动设置给定列的值?

4

1 回答 1

1

一种简单的方法是在执行每个批量插入之前向表上的 RecordDate 列添加默认约束(或修改现有约束,如果有的话)。每个插入的行都会选择 RecordDate 列的默认值(显然假设该行不包含导入 RecordDate 的值)。批量插入完成后删除约束。

alter table <Table Name> 
    add constraint <constraint name>
    default <relevant date here> for [RecordDate] 

<run the bulk insert...>

alter table <Table Name>
     drop constraint <Constraint Name>
于 2013-10-29T15:15:52.570 回答