使用SqlBulkCopy時(shí)應(yīng)注意Sqlserver表中使用缺省值的列

在網(wǎng)上找了下,大都說是因?yàn)閿?shù)據(jù)庫中的字段過?。?
來自數(shù)據(jù)源的 String 類型的給定值不能轉(zhuǎn)換為指定目標(biāo)列的類型 nvarchar。
),造成截?cái)嗟腻e誤導(dǎo)致,仔細(xì)檢查后發(fā)現(xiàn)我的表設(shè)計(jì)中沒有字段過小的情況,也不是單引號的問題。
后經(jīng)仔細(xì)調(diào)試發(fā)現(xiàn),由于使用SqlBulkCopy導(dǎo)入時(shí)我的文本文件與庫中的表列不對應(yīng)造成的。我的文本文件中有字段18個(gè),而我的表中只使用了9個(gè)字段,且有兩個(gè)是文本文件中沒有的(即表結(jié)構(gòu)1中的[Level]與[Cagegory]字段),由數(shù)據(jù)庫填入默認(rèn)值。表結(jié)構(gòu)如下:
表結(jié)構(gòu)11
CREATE TABLE [dbo].[Ryxx](
[Name] [nvarchar](30) NOT NULL,
[IdCardNo] [nvarchar](30) NOT NULL,
[Sex] [nvarchar](2) NOT NULL,
[Height] [nvarchar](5) NULL,
[Level] [nvarchar](2) NULL, --默認(rèn)為A
[Category] [nvarchar](20) NULL, --默認(rèn)為“重點(diǎn)管理”
[Sponsor] [nvarchar](100) NULL,
[Contact] [nvarchar](30) NULL,
[Phone] [nvarchar](50) NULL,
[Number] [nvarchar](30) NULL
) ON [PRIMARY]
表結(jié)構(gòu)1
修改后的表結(jié)構(gòu)如下
CREATE TABLE [dbo].[Ryxx](
[Name] [nvarchar](30) NOT NULL,
[IdCardNo] [nvarchar](30) NOT NULL,
[Sex] [nvarchar](2) NOT NULL,
[Height] [nvarchar](5) NULL,
[Sponsor] [nvarchar](100) NULL,
[Contact] [nvarchar](30) NULL,
[Phone] [nvarchar](50) NULL,
[Number] [nvarchar](30) NULL,
[Level] [nvarchar](2) NULL, --默認(rèn)為A
[Category] [nvarchar](20) NULL --默認(rèn)為“重點(diǎn)管理”
) ON [PRIMARY]
至此,問題解決。分析原因是因?yàn)閺奈谋疚募蝎@取的字段對應(yīng)到表中缺省列中去了,產(chǎn)生了截?cái)啵胂胧褂胋cp 時(shí)應(yīng)該也會出現(xiàn)這樣的錯誤。
- asp.net 使用SqlBulkCopy極速插入數(shù)據(jù)到 SQL Server
- C#中使用ADOMD.NET查詢多維數(shù)據(jù)集的實(shí)現(xiàn)方法
- C#數(shù)據(jù)庫操作類AccessHelper實(shí)例
- C#利用Openxml讀取Excel數(shù)據(jù)實(shí)例
- C#百萬數(shù)據(jù)查詢出現(xiàn)超時(shí)問題的解決方法
- C#使用DataSet Datatable更新數(shù)據(jù)庫的三種實(shí)現(xiàn)方法
- C#應(yīng)用BindingSource實(shí)現(xiàn)數(shù)據(jù)同步的方法
- C#將Sql數(shù)據(jù)保存到Excel文件中的方法
- C#中遍歷DataSet數(shù)據(jù)集對象實(shí)例
- C#使用晚綁定來實(shí)現(xiàn)壓縮Access數(shù)據(jù)庫的方法
- C# Oracle數(shù)據(jù)庫操作類實(shí)例詳解
- C#使用SqlBulkCopy批量復(fù)制數(shù)據(jù)到數(shù)據(jù)表
相關(guān)文章
SQLserver查詢數(shù)據(jù)類型為ntext是空或NULL值的方法
SQLserver查詢數(shù)據(jù)類型為ntext是空或NULL值的方法2010-07-07
SQLSERVER編譯與重編譯發(fā)生場景及重用的利弊介紹
本文將介紹編譯的含義;執(zhí)行計(jì)劃重用的利弊以及重編譯的發(fā)生場景等等,為您學(xué)習(xí)SQLSERVER編譯與重編譯打下很好的基礎(chǔ),感興趣的朋友可以了解下2013-01-01
列出SQL Server中具有默認(rèn)值的所有字段的語句
上個(gè)星期我在對一個(gè)供應(yīng)商開發(fā)的數(shù)據(jù)庫按規(guī)定進(jìn)行故障排除的時(shí)候,我們需要對他們數(shù)據(jù)庫中50個(gè)表的每一個(gè)都進(jìn)行查看,以確保所有期望是默認(rèn)值的字段都被分配了默認(rèn)值。你可以想象這是一個(gè)多么令人畏懼的工作,而我立即提出了這個(gè)問題。有沒有一個(gè)比在SQL Server管理套件中打開每一個(gè)表來查看這個(gè)schema的更好方法嗎?2008-10-10
sql 自定義百分比轉(zhuǎn)換小數(shù)函數(shù)代碼
sqlserver中自定義百分比轉(zhuǎn)換小數(shù)函數(shù),需要的朋友可以參考下。2011-09-09
Sql server 2012 中文企業(yè)版安裝圖文教程(附下載鏈接)
這篇文章主要介紹了Sql server 2012 中文企業(yè)版安裝圖文教程(附下載鏈接),需要的朋友可以參考下2020-04-04
查詢Sqlserver數(shù)據(jù)庫死鎖的一個(gè)存儲過程分享
利用sp_who_lock這個(gè)存儲過程,可以很方便的知道哪個(gè)進(jìn)程出現(xiàn)了死鎖,出現(xiàn)死鎖的問題在哪里2014-07-07
SQL Server中通過reverse取某個(gè)最后一次出現(xiàn)的符號后面的內(nèi)容(字符串反轉(zhuǎn))
昨天在項(xiàng)目中遇到了一個(gè)非常簡單的問題,需要把SQL Server數(shù)據(jù)庫中保存的一段路徑地址取出其文件名,但SQL Server又沒有現(xiàn)成的方法,最后在網(wǎng)上找到這樣的一個(gè)方法,原理是先將字符串反轉(zhuǎn),取出第一個(gè)/的位置,從頭進(jìn)行截取后再次反轉(zhuǎn)2012-07-07

