【问题标题】:How to format date field when importing CSV file into SQL Server table using BCP?使用 BCP 将 CSV 文件导入 SQL Server 表时如何格式化日期字段?
【发布时间】:2019-09-23 13:58:16
【问题描述】:

我正在使用 BCP 和 python 将.CSV 文件导入到 SQL Server 表中。 .CSV 文件有一个包含日期时间数据的列,我的表也有一个相应的 datetime2 列。问题是.CSV文件中的日期格式为:

2017-01-13T06:02:14Z

在运行 BCP 命令时引发错误。我的 BCP 命令如下所示:

bcp mydb.dbo.mytable in {0} -R -e errorfile -c -S mysqlserver.com -U myuser -P 'mypassword'

错误是:

转换规范@# 2017-01-13T06:02:14Z 的字符值无效

如果我将 .CSV 文件中的日期更改为“2017-01-13 12:33:49”,BCP 工作正常。该错误是因为 BCP 工具使用 ODBC 批量复制 API。因此,要将日期值导入 SQL Server,bcp 使用 ODBC 日期格式 (yyyy-mm-dd hh:mm:ss[.f...])。

有什么办法可以解决这个问题?

有没有办法将 CSV 文件本身的日期格式从 2017-01-13T06:02:14Z 更改为 yyyy-mm-dd hh:mm:ss?

【问题讨论】:

  • 有没有机会使用 SSIS 代替 bcp?
  • 没有。我以前没有使用过 SSIS。我正在使用 python 并调用 subprocess 来执行我的 BCP 命令。
  • 之前没用过不代表不能开始用。它可以帮助您以 bcp 无法实现的方式转换数据

标签: python sql-server csv bulkinsert bcp


【解决方案1】:

一种选择是将作为 varchar 导入临时表。进入临时表后,您可以直接转换为 datetime2 并填充 mytable

【讨论】:

    猜你喜欢
    • 2020-05-07
    • 1970-01-01
    • 2020-04-06
    • 2021-05-29
    • 1970-01-01
    • 2018-05-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多