我想使用格式为YYYY.MM.DD hh:mm:ss.nnn(2015.09.28 00:00:02.721)的datetime-column导入一个巨大的csv文件。它是datetime支持的字符串文字格式: datetime (Transact-SQL)。 我使用DT_DBTIMESTAMP作为Integration Services数据类型: Integration Services Data Types。 但由于转换错误,导入无效。我只能以YYYY-MM-DD格式导入hh:mm:ss.nnn。我的操作系统,SQL 2014和DB都是德语。如何在不进行搜索的情况下执行此任务,并使用正则表达式替换csv?
答案 0 :(得分:0)
我不确定我理解您对正则表达式的意思 - 但这里有一个解决方案:
您可以将文件导入临时保留表,然后使用DataConversion任务将其转换为日期时间。
您还可以将以下SQL应用于您的表 - 这可能会更快:
UPDATE tempTable SET NewDateCol = CAST(OldDateCol AS DATETIME)
其中OldDateCol
是包含“无效”日期格式的导入文本字段。
因为我们知道这会奏效:
SELECT CAST('2012.05.06 11:25:33.123' AS DATETIME)
答案 1 :(得分:0)
纯SSIS数据流解决方案 - 使用以下NewDateCol
公式的派生列转换PROC XXX
基本上,这个表达式取代了。使用 - 在前10个符号上,然后附加其余符号。
答案 2 :(得分:0)
我的解决方法: 1.带有日期时间的CREATE TABLE(它使得毫秒舍入错误 - 2015.09.28 00:00:01.159是2015-09-28 00:00:01.160等,无论出于何种原因)或datetime2(3)(2015.09.28 00: 00:01.159是2015-09-28 00:00:01.1590000 - 正确但超大) 2.设置日期格式ymd 3.来自csv的BULK INSERT使用TABLOCK和CODEPAGE ='RAW'来提高性能