【问题标题】:Import data from Excel Wizard automatically detects data types从 Excel 导入数据向导自动检测数据类型
【发布时间】:2014-01-22 08:33:53
【问题描述】:

您好,我正在尝试将数据从 excel 文件 (xls) 导入到新的 SQL table,所以我使用 Import and Export data 32/bit 来实现这一点。当我加载 excel 文件时,它会自动检测列的数据类型。例如当我尝试将float 更改为nvarchar 时,带有电话号码的列是新表float 的数据类型,并且在excel 中是Double(15)

我明白了:

找到 2 个未知的列类型转换 您已选择跳过 1 个可能丢失的列转换 您已选择跳过 3 次安全列转换

而且我不能继续导出。

在尝试导入数据时,有什么方法可以更改数据类型?

感谢您的宝贵时间。

这些数据在excel中设置为text数据类型 来自 excel 中某一列的示例数据:

5859031783

5851130582

8811014190

这是我得到的:

【问题讨论】:

  • 该列在 Excel 工作表中的数据类型是什么,在导出之前尝试将其设置为 Text
  • @M.Ali 我试过但仍然遇到同样的问题。
  • 你能展示一些示例数据吗?
  • @M.Ali 我更新了我的问题。问题是它会自动将这些数字格式化为浮点数,因此它会被格式化,例如作为3.35E+03
  • @M.Ali 我尝试使用 excel text 中的 float 数据类型运行它,并得到与 excel 中相同的值。现在一切正常!谢谢。

标签: sql sql-server excel sql-import-wizard


【解决方案1】:

选择 Excel 工作表中的列并将数据类型更改为文本

然后到你的sql server打开导入-导出向导,做选择源数据和bla bla的所有步骤,当你到达Mapping Column时,它会默认选择Float数据类型,你会在我的测试中必须将其更改为 NVARCHAR(N) 我将其更改为 NVARCHAR(400),它警告我在将数据从 1 个数据类型转换为另一个数据类型时可能会丢失一些数据。

当您到达Data Type Mapping 页面时,请确保选中转换复选框。并酌情停止失败的过程。

经过所有这些步骤,最终我的数据在目标表中得到了相同的Warning,我已经转换了一些数据 n bla bla,毕竟微软太担心了 :)

Sql-Server 表中的最终数据

╔═══════╦════════════╦═════════╦════════════════╦══════════════╗
║ Name  ║    City    ║ Country ║     Phone      ║ Float_Column ║
╠═══════╬════════════╬═════════╬════════════════╬══════════════╣
║ Shaun ║ London     ║ UK      ║ 04454165161665 ║   5859031783 ║
║ Mark  ║ Newyork    ║ USA     ║ 16846814618165 ║   8811014190 ║
║ Mike  ║ Manchester ║ UK      ║ 04468151651651 ║   5851130582 ║
╚═══════╩════════════╩═════════╩════════════════╩══════════════╝

【讨论】:

    【解决方案2】:

    我非常不喜欢 SQL Server 导入/导出向导。

    不是一个直接的答案,但我发现使用向导的最佳猜测然后在 SQL Server 中修复表规范后,我发现它不那么令人沮丧。

    【讨论】:

      猜你喜欢
      • 2022-01-07
      • 1970-01-01
      • 1970-01-01
      • 2014-09-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-27
      • 2015-09-03
      相关资源
      最近更新 更多