首页 > 解决方案 > 使用 BCP 将 CSV 文件导入 SQL Server 表时如何格式化日期字段?

问题描述

我正在使用 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?

标签: pythonsql-servercsvbulkinsertbcp

解决方案


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


推荐阅读