本文将与您分享一个关于使用SqlBulkCopy来关注Sqlserver表中具有默认值的列的示例分析。边肖觉得挺实用的,分享给你学习。希望你看完这篇文章能有所收获。没什么好说的,让我们和边肖一起看看吧。
无法将数据源中字符串类型的给定值转换为指定目标列的类型nvarchar。
在网上搜索后,大部分都说数据库中的字段太小(数据源中给定的String类型的值无法转换为指定目标列的nvarchar类型。),这导致了截断误差。仔细检查后发现,我的表格设计中没有出现字段过小的情况,也不是单引号问题。经过仔细调试,发现我的文本文件在使用SqlBulkCopy导入时与库中的表列不对应。我的文本文件中有18个字段,但我的表中只使用了9个字段,还有两个字段不在文本文件中(即表结构1中的[Level]和[Cagegory]字段),默认值由数据库填写。
结构如下:
代码如下:
结构11可创建表[dbo]。[ryxx] ([name] [nvarchar] (30)不为空、[idcardno] [nvarchar] (30)不为空、[sex] [nvarchar] (2)不为空、[height] [nvarchar] (5)为空、[level] [nvarchar] (2)为空、-默认值为A [Category] [nvarchar](20) NULL、-默认值为“密钥管理”[赞助商] [nvarchar](100) NULL、[联系人] [nvarchar](30) NULL、[电话] [nvarchar](50) NULL、[号码] [nvarchar] (30)
表1结构
修改后的表格结构如下
代码如下:
创建表格[dbo]。[Ryxx]([Name][nvarchar](30)NOT NULL、[idcard no][nvarchar](30)NOT NULL、[Sex] [nvarchar](2) NOT NULL、[Height] [nvarchar](5) NULL、[赞助商] [nvarchar](100) NULL、[联系人] [nvarchar](30) NULL、[Phone] [nvarchar](50) NULL、[number] [nvarchar] (30) null、[level] [nvarchar] (2) null,-默认值为[category][nvarchar](20)NULL-默认值为“1”
分析的原因是从文本文件中获得的字段对应于表中的默认列,从而导致截断。使用bcp时请考虑这个错误。
以上是使用SqlBulkCopy关注Sqlserver表中具有默认值的列的示例分析。边肖认为,一些知识点可能会在我们的日常工作中看到或使用。我希望你能通过这篇文章学到更多的知识。更多详情请关注行业信息渠道。
内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/133898.html