【问题标题】:error converting data types when importing excel file into sql server将excel文件导入sql server时转换数据类型出错
【发布时间】:2013-11-21 06:58:32
【问题描述】:

作为一名 SQL 初学者,我正在尝试将数据从 Excel 导入到 sql server 中的表中。我使用 sql 导入向导导入了数据。由于向导总是将我的一些数字列默认为 nvarchar 并且不允许我在映射中更改它,我计划将数据导入临时表,然后使用 INSERT 和 CAST 函数将数据传输到永久目标表. 但是,在进行插入时,出现“将数据类型 nvarchar 转换为数字时出错”的错误。谁能告诉我为什么以及如何解决这个问题?这是我的代码:

INSERT INTO [DatabaseA].[dbo].[mstr_Project]
  ([Project_Start_Year]
  ,[Project_Name]
  ,[Client_Name]
  ,[Client_Revenue_in_Millions]
  ,[Client_Employee_Number])
SELECT [ProjectStartYear]
  ,[ProjectName]
  ,[ClientName]
  ,CAST([ClientRevenuesInMillions] AS NUMERIC)
  ,CAST([EmployeeNo] AS NUMERIC)
FROM [dbo].[temp_ProjectImport]

谢谢一百万!!

【问题讨论】:

  • 在您的 Excel 文件中查找 ClientRevenuesInMillions(或任何其他失败的列)包含字母字符的任何实例。错误告诉您究竟出了什么问题,这些列中的某些值无法转换为数字。
  • 我有问题的数字列都是空的,没有值。我想这就是 Excel 认为它们是基于列标题的 nvarchar 的原因。我怎样才能让 Excel 认为它们实际上是数字,但现在没有值?

标签: sql sql-server


【解决方案1】:

你可以这样做convert(nvarchar(255), @col)

INSERT INTO [DatabaseA].[dbo].[mstr_Project]
      ([Project_Start_Year]
      ,[Project_Name]
      ,[Client_Name]
      ,[Client_Revenue_in_Millions]
      ,[Client_Employee_Number])
    SELECT [ProjectStartYear]
      ,[ProjectName]
      ,[ClientName]
      ,CAST([ClientRevenuesInMillions] AS NUMERIC)
      ,CONVERT(NVARCHAR(255),[EmployeeNo] ) as new_converted_value
    FROM [dbo].[temp_ProjectImport]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-10-30
    • 1970-01-01
    • 1970-01-01
    • 2011-07-14
    • 2017-05-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多