【问题标题】:SSMS import wizard trouble loading CSV date column with date and time with millisecondsSSMS 导入向导无法加载带有日期和时间的 CSV 日期列(以毫秒为单位)
【发布时间】:2020-11-24 05:16:55
【问题描述】:

我尝试使用 ssms 导入向导将一些大型 CSV 文件导入到 SQL Server 表中。其中一列是格式为 yyyy-mm-dd hh:MM:ss:xxx 的日期列。我已经尝试了提供给我的源字段中的每种日期格式,但它充其量只会给我整个日期,毫秒为 .000,而不是 .txt CSV 文件中的值。

我唯一能想到的是输入日期在冒号 (:) 之后的毫秒数,而不是句点 (.)。我可以编写一个程序将冒号转换为句点然后加载它,但我确实编辑了文件并将前六行更改为句点,但这似乎没有任何效果。

对于我使用“平面文件源”的导入,在“高级”下,我为列选择“数据类型”,并使用以下每一项作为数据类型。

数据库日期[DT_DBDATE],数据库时间[DT_DBTIME],数据库时间精度[DT_DBTIME2],

数据库时间戳 [DT_DBTIMESTAMP],精确的数据库时间戳 [DT_DBTIMESTAMP2],

DT_DBTIMESTAMPOFFSET] 偶数日期[DT_DATE],十进制[DT_DECIMAL],文件时间戳[DT_FILETIME]

目标是到 SQL Server Native Client 11.0 到目标 datetime2 的类型,在表上定义为 datetime2(7),而不是 null。

通过所有这些尝试,我要么得到“数据将被截断”错误,要么加载时毫秒设置为 000,而不是 CSV 文件中的值。

我将不胜感激。

谢谢,

鲍勃

【问题讨论】:

    标签: ssms


    【解决方案1】:

    感谢任何花一些时间研究此问题的人,但我以不同的方式解决了我的问题。我没有将字符串日期时间转换为数据库日期时间,而是将其作为 varchar 列加载到我的表中。我只会在 SELECT 语句的 where 子句中使用该日期时间,而不会在日期或时间比较中使用该日期时间。当我需要选择数据时,在“where 子句”中使用子字符串应该可以正常工作。

    【讨论】:

      猜你喜欢
      • 2022-11-27
      • 2023-04-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-10
      • 1970-01-01
      相关资源
      最近更新 更多