BCP SQL 服务器无效日期格式
BCP SQL Server Invalid Date Format
我有大量数据要导入到 Azure SQL 数据库中。我正在复制的 table 也有一个 smalldatetime 格式的时间戳字段,然后是另外 195 个浮点数字段。我正在尝试将 csv 文件 BCP 到 table。 CSV 文件具有完全相同的格式。时间戳的格式相同,但我不断收到无效日期格式错误。
来自数据库的时间戳示例:
2017-11-05 12:00:00
csv 文件中的时间戳示例:
2017-11-27 00:16:37
我试过将 bcp 与 -n 一起使用,并使用 -n 生成的格式文件和使用 -x 生成的格式文件。都给出无效的日期格式错误。
bcp dbo.Meters format nul -n -S <URL> -d <databasename> -U <username> -P <password> -f format.fmt
bcp dbo.Meters IN "output.csv" -S <URL> -d <databasename> -U <username> -P <password> -f format.fmt -t ,
我也尝试过使用 -c 选项,但出现了不同的错误:
Fractional second precision exceeds the scale specified in the parameter binding.
我在 google 上找不到太多与此相关的内容,但这似乎意味着 csv 文件中的时间戳中有几分之一秒超过了数据库中 smalldatetime 格式的大小 table。 None 的 csv 文件中的时间戳有任何小数秒。
有谁知道为什么它认为日期格式不同?提前致谢!
可以下载 CSV 文件示例here。
创建table不同字段名的语句可以下载here.
感谢 Nick.McDermaid 的解决方案:
我在数据库上创建了一个分段 table,所有列名都与目标 table 相同,但每个列类型都是 varchar。
然后 bcp 使用字符选项 -c 上传到分段 table。
bcp dbo.Staging IN "output.csv" -S <URL> -d <databasename> -U <username> -P <password> -c -t ,
那么它所需要的只是以下 SQL 代码来更新实际 table 并从暂存 table.
中删除数据
INSERT INTO dbo.Meters
SELECT * FROM dbo.Staging
GO
DELETE FROM dbo.Staging
GO
我有大量数据要导入到 Azure SQL 数据库中。我正在复制的 table 也有一个 smalldatetime 格式的时间戳字段,然后是另外 195 个浮点数字段。我正在尝试将 csv 文件 BCP 到 table。 CSV 文件具有完全相同的格式。时间戳的格式相同,但我不断收到无效日期格式错误。
来自数据库的时间戳示例:
2017-11-05 12:00:00
csv 文件中的时间戳示例:
2017-11-27 00:16:37
我试过将 bcp 与 -n 一起使用,并使用 -n 生成的格式文件和使用 -x 生成的格式文件。都给出无效的日期格式错误。
bcp dbo.Meters format nul -n -S <URL> -d <databasename> -U <username> -P <password> -f format.fmt
bcp dbo.Meters IN "output.csv" -S <URL> -d <databasename> -U <username> -P <password> -f format.fmt -t ,
我也尝试过使用 -c 选项,但出现了不同的错误:
Fractional second precision exceeds the scale specified in the parameter binding.
我在 google 上找不到太多与此相关的内容,但这似乎意味着 csv 文件中的时间戳中有几分之一秒超过了数据库中 smalldatetime 格式的大小 table。 None 的 csv 文件中的时间戳有任何小数秒。
有谁知道为什么它认为日期格式不同?提前致谢!
可以下载 CSV 文件示例here。
创建table不同字段名的语句可以下载here.
感谢 Nick.McDermaid 的解决方案:
我在数据库上创建了一个分段 table,所有列名都与目标 table 相同,但每个列类型都是 varchar。
然后 bcp 使用字符选项 -c 上传到分段 table。
bcp dbo.Staging IN "output.csv" -S <URL> -d <databasename> -U <username> -P <password> -c -t ,
那么它所需要的只是以下 SQL 代码来更新实际 table 并从暂存 table.
中删除数据INSERT INTO dbo.Meters
SELECT * FROM dbo.Staging
GO
DELETE FROM dbo.Staging
GO