SqlBulkCopy 來自數(shù)據(jù)源的 String 類型的給定值不能轉(zhuǎn)換為指定目標列的類型 nvarchar。
在網(wǎng)上找了下,大都說是因為數(shù)據(jù)庫中的字段過?。?
來自數(shù)據(jù)源的 String 類型的給定值不能轉(zhuǎn)換為指定目標列的類型 nvarchar。
),造成截斷的錯誤導致,仔細檢查后發(fā)現(xiàn)我的表設(shè)計中沒有字段過小的情況,也不是單引號的問題。
后經(jīng)仔細調(diào)試發(fā)現(xiàn),由于使用SqlBulkCopy導入時我的文本文件與庫中的表列不對應(yīng)造成的。我的文本文件中有字段18個,而我的表中只使用了9個字段,且有兩個是文本文件中沒有的(即表結(jié)構(gòu)1中的[Level]與[Cagegory]字段),由數(shù)據(jù)庫填入默認值。表結(jié)構(gòu)如下:
復(fù)制代碼 代碼如下:
表結(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, --默認為A
[Category] [nvarchar](20) NULL, --默認為“重點管理”
[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)如下
復(fù)制代碼 代碼如下:
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, --默認為A
[Category] [nvarchar](20) NULL --默認為“重點管理”
) ON [PRIMARY]
至此,問題解決。分析原因是因為從文本文件中獲取的字段對應(yīng)到表中缺省列中去了,產(chǎn)生了截斷,想想使用bcp 時應(yīng)該也會出現(xiàn)這樣的錯誤。
您可能感興趣的文章:- asp.net 使用SqlBulkCopy極速插入數(shù)據(jù)到 SQL Server
- C#中使用ADOMD.NET查詢多維數(shù)據(jù)集的實現(xiàn)方法
- C#數(shù)據(jù)庫操作類AccessHelper實例
- C#利用Openxml讀取Excel數(shù)據(jù)實例
- C#百萬數(shù)據(jù)查詢出現(xiàn)超時問題的解決方法
- C#使用DataSet Datatable更新數(shù)據(jù)庫的三種實現(xiàn)方法
- C#應(yīng)用BindingSource實現(xiàn)數(shù)據(jù)同步的方法
- C#將Sql數(shù)據(jù)保存到Excel文件中的方法
- C#中遍歷DataSet數(shù)據(jù)集對象實例
- C#使用晚綁定來實現(xiàn)壓縮Access數(shù)據(jù)庫的方法
- C# Oracle數(shù)據(jù)庫操作類實例詳解
- C#使用SqlBulkCopy批量復(fù)制數(shù)據(jù)到數(shù)據(jù)表