【问题标题】:What is a better alternative to Excel for loading data to a SQL Server database?将数据加载到 SQL Server 数据库时,有什么比 Excel 更好的替代方法?
【发布时间】:2012-06-14 22:45:26
【问题描述】:

我在将电子表格加载到 SQL Server 数据库中时遇到了很多麻烦。

目前,我正在使用 SSIS 包来加载数据,我必须进行大量调整才能加载数据:

  • 所有数字都必须格式化为文本(否则无法正确加载)。
  • 有时数字必须以单引号 (') 开头才能加载。
  • 如果一列同时包含数字单元格和文本单元格,则文本单元格必须位于文件的首位(否则只会加载数字而文本以 NULL 形式出现)。
  • 如果用户更改列名,文件将不会加载。
  • 如果用户更改选项卡名称,文件将不会加载。
  • 如果用户添加新列(即使在工作表的末尾),文件也不会加载。
  • 文件中的额外工作表不是问题,谢天谢地!
  • 日期似乎很敏感,无论它们能否正确加载。
  • Excel 文件的连接字符串必须包含“IMEX=1”,否则情况会更糟。
  • 即使在 64 位系统上,计划的 SSIS 作业也必须以 32 位运行。

我一直在将数据(通常每个文件 200,000-500,000 行)加载到所有字段都定义为 nvarchar 的表中。然后,在加载后,我将在 SSIS 包的下一步中将该数据传输到带有类型数据字段的工作表。

我必须对用户提出的关于如何格式化 Excel 文件的所有要求真的很痛苦。我们通常必须多次发回文件,直到所有格式问题都正确后才能加载文件。我想消除这种颠簸。

我知道我不是唯一面临此类问题的人。所以,我必须问...

在将数据加载到 SQL Server 数据库中时,有什么比 Excel 更好的替代方法?

或者,我是不是走错了路?我应该使用 SSIS 以外的其他工具来加载 Excel 电子表格吗?

【问题讨论】:

  • 您是否正在转换到新系统,或者(听起来)您是否一直在上传?我们从 csv 或 excel 进行上传。我们有一个页面,允许用户选择 csv 或 xml(excel 稍后会......也许),它会导入和清理数据
  • 我在工作中经常将电子表格上传到各种系统。这是正常的工作流程,而不是升级方案。我们有一个类似的系统供用户使用。当他们无法弄清楚文件被系统拒绝的原因时,我会参与其中。
  • 拒绝原因是否一致?您对创建要加载的文件有多少控制权?也许更容易专注于使原始文件正确而不是使用不同的导入方法(如果它在大多数情况下都有效)
  • 用户下载一个模板文件,然后用他们的数据填充它以提供给系统。他们通常从其他来源复制和粘贴或输入他们的数据。
  • @BoltBait 我认为这是相反的方式 - Imex=1 说将所有内容都视为文本,但是有一个注册表项可以控制猜测的深度。 编辑:也许这会有所帮助:stackoverflow.com/questions/9918279/…

标签: sql-server excel ssis


【解决方案1】:

你可以试试 OpenRowSet:

SELECT *
INTO SomeTable
From OpenRowSet('Microsoft.Jet.OLEDB.4.0', 
    'Excel 8.0;Database=\\servername\c$\filename.xls;HDR=YES;IMEX=1', [Sheet2$])

【讨论】:

    【解决方案2】:

    不是真正的 SQL 答案,而是一个简单的答案:

    您可以要求用户将数据复制并粘贴到 Excel 电子表格中,其中除了要包含的数据字段之外的所有内容都被锁定。这将避免上述许多痛点。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-17
      相关资源
      最近更新 更多