Sql server BCP SQL Server无效的日期格式

Sql server BCP SQL Server无效的日期格式,sql-server,csv,azure,azure-sql-database,bcp,Sql Server,Csv,Azure,Azure Sql Database,Bcp,我有大量数据要导入Azure SQL数据库。我复制的表也有一个smalldatetime格式的时间戳字段,然后还有195个浮动字段。我正在尝试将csv文件BCP到表中。CSV文件具有完全相同的格式。时间戳的格式是相同的,但我一直得到一个无效的日期格式错误 bcp dbo.Meters format nul -n -S <URL> -d <databasename> -U <username> -P <password> -f format.fmt

我有大量数据要导入Azure SQL数据库。我复制的表也有一个smalldatetime格式的时间戳字段,然后还有195个浮动字段。我正在尝试将csv文件BCP到表中。CSV文件具有完全相同的格式。时间戳的格式是相同的,但我一直得到一个无效的日期格式错误

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 ,
来自数据库的时间戳示例:

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 ,
我在谷歌上找不到多少与此相关的信息,但这似乎意味着csv文件中的时间戳中有几秒钟超过了数据库表中smalldatetime格式的大小。但是csv文件中的时间戳都没有小数秒

有人知道为什么它认为日期的格式不同吗?提前谢谢

可以下载CSV文件的示例


可以下载具有不同字段名的Create table语句。

解决方案感谢Nick.McDermaid:

我在数据库上创建了一个staging表,它的列名与目标表的列名相同,但每种列类型都是varchar

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

bcp dbo.Staging IN "output.csv" -S <URL> -d <databasename> -U <username> -P <password> -c -t ,
INSERT INTO dbo.Meters
SELECT * FROM dbo.Staging
GO

DELETE FROM dbo.Staging
GO    

我建议你试着把问题孤立起来。针对仅包含smalldatetime字段的表和仅包含单个值的csv文件进行测试;测试它是好是坏,然后从中调试。因此,对于测试表,除了-c选项之外,我得到了一个EOF错误,它给出了一个“cast规范的无效字符值”错误,但仍然复制了数据。EOF错误与行尾字符有关,但我在上传到实际表时没有收到此错误,测试和实际csv文件都以CR LF结尾。这是否缩小了范围?我不知道该怎么做。您正在使用CSV,但正在尝试使用本机格式文件导入。这是行不通的。至少不是你写代码的方式。导出csv格式文件而不是本机格式文件,然后再试一次。看起来可能存在编码问题。csv文件的编码是什么?您的客户端操作系统是什么?你可以发布一个链接到你试图上传的csv文件吗?我一直在使用一个格式化文件,但是我是否需要创建一个不同的文件来与csv一起使用,我将如何做?如果我使用制表符分隔的文本文件(今天我将对此进行实验),这些问题是否可以避免?很遗憾,我无法共享csv文件,因为其中包含机密数据。客户端操作系统为Windows 10,csv文件由Excel通过VBscript创建。编码是ANSI。我要用UTF-8试试。谢谢你的建议!