0

我使用以下查询将数据从Excel文件导入SQL Server数据库。 Excel文件具有所有值作为字符串类型(每个单元格之前的')。无法将数据类型nvarchar转换为数字

,当我将其导入我得到这个错误。“不能为nvarchar数据类型转换为数字”

如果我从进口取出两列SalePrice和Price2,然后导入成功。

我的表的数据类型是

CREATE TYPE [dbo].[InventoryType] AS TABLE 
(
    [LocalSKU] [varchar](200) NOT NULL, 
    [ItemName] [varchar](200) NULL, 
    [QOH] [int] NULL, 
    [Price] [decimal](19, 4) NULL, 
    [Discontinued] [bit] NULL, 
    [Barcode] [varchar](25) NULL, 
    [Integer2] [int] NULL, 
    [Integer3] [int] NULL, 
    [SalePrice] [decimal](19, 4) NULL, 
    [SaleOn] [bit] NULL, 
    [Price2] [decimal](19, 4) NULL 
) 
GO 

我使用的查询是:

SqlCommand sqlcmd = new SqlCommand 
    (@"MERGE Inventory AS target 
     USING (SELECT 
       LocalSKU, ItemName, QOH, Price, Discontinued, 
       Barcode, Integer2, Integer3, SalePrice, SaleOn, Price2 
      FROM @source) AS Source ON (Source.LocalSKU = target.LocalSKU) 
     WHEN MATCHED THEN 
     UPDATE 
      SET ItemName = source.ItemName, 
       Price = source.Price, 
       Discontinued = source.Discontinued, 
       Barcode = source.Barcode, 
       Integer2 = source.Integer2, 
       Integer3 = source.QOH, 
       SalePrice = source.SalePrice, 
       SaleOn = source.SaleOn, 
       Price2 = source.Price2;", sqlconn); 

SqlParameter param; 
param = sqlcmd.Parameters.AddWithValue("@source", dr); 
param.SqlDbType = SqlDbType.Structured; 
param.TypeName = "dbo.InventoryType"; 

sqlconn.Open(); 
sqlcmd.ExecuteNonQuery(); 
sqlconn.Close(); 
+0

该声明不插入任何东西 - 它只更新现有的行.....另外:你没有发布你得到的实际**错误**! –

+0

@marc_s我已经更新了这个问题。是的,它只是更新。 – user2525244

+0

“QOH”列的类型可以转换为数字类型吗? –

回答

0

有一点要记住的是,你可以在给定列这是一些无效数据抛出错误(s)。例如,如果您有一个数字列,并且有字母或格式不正确的数字值,则会引发此错误。检查单元格中首先不正确的值。这包括尾随或领先的空间。

相关问题