【发布时间】: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