批量插入在MS SQL表中YYYYMM格式的日期到日期字段(bulk insert a date i

2019-06-24 03:33发布

我有一个大的文本文件(超过300万条记录)。 有包含YYYYMM格式的日期字段。 目标字段是日期型的,我使用MS SQL 2008 R2服务器。 由于数据量巨大我宁愿使用批量插入。 以下是我已经做了:

bulk insert Tabela_5
from 'c:\users\...\table5.csv'
with
(
    rowterminator = '\n',
    fieldterminator = ',',
    tablock
)
select * from Tabela_5

201206在文件原来是2020-12-06在服务器上,而我想它是2012-06-01 (我不关心天)。 有没有办法在这样的格式批量插入日期日期型字段?

亲切的问候马切伊Pitucha

Answer 1:

有没有办法做到这一点的批量插入。 你有两个选择。

  1. 插入日期成varchar字段,然后运行一个查询的日期转换为DateTime字段
  2. 使用SSIS


Answer 2:

运行SET DATEFORMAT ymd BULK INSERT语句之前

需要注意的是yyyy-mm-ddyyyy-dd-mm不安全的SQL Server一般:这将导致此。 始终使用yyyymmdd 。 如需更多信息,请参见转换和验证日期字符串最好的办法 (意见特别突出的误解这里)



Answer 3:

你可能不关心的一天,但SQL一样。
YYYYMM不是有效的SQL日期。
一个日期必须有一天的组成部分。
在您的例子是分析下来为YYMMDD。
你可以插入到VARCHAR作为Jaimal提出再追加01和转换。

我会读在.NET中的数据加上01,并使用DateTime.ParseExact和行非同步插入一行。 您可以捕获任何解析不成功。

或者你可能能够做到在CSV全局替换“”到‘01’。 这是值得一试。



文章来源: bulk insert a date in YYYYMM format to date field in MS SQL table