gpt4 book ai didi

sql-server - BCP SQL Server 日期格式无效

转载 作者:行者123 更新时间:2023-12-02 06:31:51 24 4
gpt4 key购买 nike

我有大量数据需要导入到 Azure SQL 数据库中。我正在复制的表也有一个小日期时间格式的时间戳字段,然后还有另外 195 个 float 字段。我正在尝试将 csv 文件 BCP 到表中。 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.

我在谷歌上找不到太多与此相关的信息,但这似乎意味着 csv 文件中的时间戳中有几分之一秒,超出了数据库表中的smalldatetime 格式的大小。不过,csv 文件中的时间戳都没有任何小数秒。

有谁知道为什么它认为日期采用不同的格式?提前致谢!

可以下载 CSV 文件示例 here .

不同字段名建表语句可以下载here .

最佳答案

感谢 Nick.McDermaid 的解决方案:

我在数据库上创建了一个临时表,其所有列名称与目标表相同,但每个列类型均为 varchar。

然后 bcp 使用字符选项 -c 上传到暂存表中,工作正常。

bcp dbo.Staging IN "output.csv" -S <URL> -d <databasename> -U <username> -P <password> -c -t ,

然后它只需要以下 SQL 代码来更新实际表并从临时表中删除数据。

INSERT INTO dbo.Meters
SELECT * FROM dbo.Staging
GO

DELETE FROM dbo.Staging
GO

关于sql-server - BCP SQL Server 日期格式无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47652156/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com