應用SqlBulkCopy時應留意Sqlserver表中應用缺省值的列。本站提示廣大學習愛好者:(應用SqlBulkCopy時應留意Sqlserver表中應用缺省值的列)文章只能為提供參考,不一定能成為您想要的結果。以下是應用SqlBulkCopy時應留意Sqlserver表中應用缺省值的列正文
在網上找了下,年夜都說是由於數據庫中的字段太小(
來自數據源的 String 類型的給定值不克不及轉換為指定目的列的類型 nvarchar。
),形成截斷的毛病招致,細心檢討後發明我的表設計中沒有字段太小的情形,也不是單引號的成績。
後經細心調試發明,因為應用SqlBulkCopy導入時我的文本文件與庫中的表列纰謬應形成的。我的文本文件中有字段18個,而我的表中只應用了9個字段,且有兩個是文本文件中沒有的(即表構造1中的[Level]與[Cagegory]字段),由數據庫填入默許值。表構造以下:
表構造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]
表構造1
修正後的表構造以下
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]
至此,成績處理。剖析緣由是由於從文本文件中獲得的字段對應到表中缺省列中去了,發生了截斷,想一想應用bcp 時應當也會湧現如許的毛病。