【问题标题】:Dynamic Load of Excel and csv to Sql server将 Excel 和 csv 动态加载到 Sql 服务器
【发布时间】:2019-11-09 06:32:33
【问题描述】:

我想根据数据库表中的配置将庞大的 excel 和 csv 文件数据动态加载到 SQL 服务器中。每个文件都会有所不同,应该动态加载到表中,请提供最好的实现方式?

我已尝试使用 ssis,但对于 excel,ssis 将根据前 8 行确定列数据类型,因此会导致问题。

【问题讨论】:

  • 离题太远了。查看主题what topics can i ask
  • 控制用于推理的行数。如果您不喜欢结果,请更改类型。没有应用程序会一直猜测正确的类型。
  • @PanagiotisKanavos 我认为使用 Office.Interop 程序集的 C# 解决方案可以解决问题

标签: sql-server excel csv ssis etl


【解决方案1】:

在Excel中,将所有麻烦的单元格格式化为文本;默认情况下,所有列的格式都设置为常规。现在,保存您的更改重试。你应该得到你所追求的。详情请见this link

【讨论】:

  • 这会将强类型日期和数字转换为本地化字符串,从而更难导入数据。可能是因为字符串导致SSIS遇到麻烦
  • 好吧,我已经好几年没用过 SSIS,但我记得,它解决了我遇到的所有/所有问题。此外,将 IMEX=1 添加到 Excel 驱动程序连接字符串的末尾。这将允许 Excel 以 Unicode 格式读取值。有关详细信息,请参阅下面的链接。 social.msdn.microsoft.com/Forums/sqlserver/en-US/…
  • 那你打算如何处理日期字符串呢?不,IMEX=1 不会让 Excel 将任何内容读取为 Unicode。 Excel 文件 Unicode - xlsx 是一个包含 XML 文件的 zip 包
  • 我已尝试更改 IMEX=1 并更改 regedit,但同样的问题仍然存在,而且我必须加载每个大小为 500MB 到 1 GB 的文件。
  • 我不仅在研究 ssis,还研究任何可以更快地加载文件的工具或脚本,请建议
【解决方案2】:

C#解决方案

最近我在 Git-Hub 上开始了一个新项目,这是一个使用 C# 开发的类库。您可以使用它使用架构映射方法将表格数据从 excel、word、powerpoint、text、csv、html、json 和 xml 导入到具有不同架构定义的 SQL Server 表中。在以下位置查看:

您可以按照此 Wiki 页面获取分步指南:


SSIS 解决方案

如果您想使用 SSIS,可以参考我对以下主题的回答:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-01-16
    • 1970-01-01
    • 1970-01-01
    • 2017-03-13
    • 1970-01-01
    • 2014-01-02
    • 2017-06-29
    • 2014-01-12
    相关资源
    最近更新 更多