【发布时间】: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