【问题标题】:Automating the import data process of an usually formatted CSV file into SQL Server 2012将通常格式化的 CSV 文件的数据导入过程自动化到 SQL Server 2012
【发布时间】:2013-10-12 23:02:05
【问题描述】:

我正在开发一个需要将数据从 CSV 文件导入 SQL Server 的系统。 CSV 文件有两组不同的数据。每组数据在数据库中都有自己的表。 (请查看附件图片以了解 CSV 的外观)

要使用导入/导出功能,我必须将两个集合复制粘贴到两个不同的 CSV 文件中,然后一次导入一个,以便映射正常工作。

系统每天将处理 1000 多个 CSV 文件。所以这个过程需要自动化。我想我需要编写一些 .net 脚本来处理每个 CSV 文件,这些文件将获取数据并将其转储到数据库中。我对么?还有其他建议吗?

【问题讨论】:

  • 如果你有 SQL Server,你没有 SSIS 吗?
  • 我确实有 SSIS。但是我有 1000 多个 CSV 文件需要修改才能使用 SSIS。如果我直接在上述 CSV 上尝试 SSIS,它无法识别正确的字段。

标签: c# .net sql-server vb.net csv


【解决方案1】:

我们的方法是创建一个与我们的主应用程序集成的服务,该服务将读取用户发送的 CSV 和 XLS 文件队列,解析它们并将它们存储到 DBMS(Oracle 或 SQL Server)中的数据表中 这种方法的优点是您的服务可以做一些其他事情并将消息发送回您的应用程序。

用户可以通过熟悉的界面(您的应用)而不是学习新工具来做到这一点。基本上,与应用程序完全集成,但实际处理是在专用服务器上完成的。

【讨论】:

  • 这正是我想要完成的。但我不确定如何做到这一点。我可以使用 VBScript 来修改和创建新的 CSV,然后使用 SSIS-BI 将该数据导入 SQL Server。
  • 一旦文件在队列中,winservice 就会运行一个应用程序,该应用程序知道如何使用 Office Interop 处理文件。我的意思是,在我们的例子中,没有脚本或任何工具 - 全部在 c# 代码中。您可以像读取数据库表一样读取 CSV 和 XLS,然后在将数据存储到主数据库之前对数据进行任何操作和解析。
  • 所以您建议用 C# 或 vb.net 编写这样的应用程序,对吗?并且不使用 SSIS-BI?
  • 我对您的业务和要求知之甚少。但是从集成和控制流程的能力的角度来看,编写自定义代码总是效果更好。第三方工具也不错。例如,如果我是一名医生,并且我想使用 Excel 将患者数据提交到某个服务器 - 如果我使用具有集成代码的应用程序,该应用程序已经知道是谁提交了数据、如何解析它以及将它放在哪里。但是如果我 ftp 文件到你的服务器,你需要解析这个文件来知道这个文件来自谁,你需要知道运行哪个作业,等等。
【解决方案2】:

Talend 也是一个很棒的工具,特别是对于这类东西。您可以从任何数据源(包括从 CSV 到 Excel)设计导入作业。

如果每个 CSV 文件的数据量相当大,我会编写一些利用 SqlClient 的批量插入功能的作业。这使得数据插入更快...

Talend 支持批量插入,所以这应该很容易创建...

我们有 100 多个 Talend Jobs,它们不仅可以复制数据,还可以进行大量转换等...这是一件非常可靠的事情,而且是免费的...

【讨论】:

  • 那么您是说 Talend 将提供处理 100 多个 CSV 文件的能力,从该 CSV 转换选定的字段,将其放入单独的文件中,然后还将新文件中的数据插入 SQL 服务器?
  • 是的,很容易!这就是这个工具真正擅长的。您还可以设计这些“任务”并在任何您想要的地方运行它们,它实际上会编译成一个 jar 文件(Talend 在后台生成 Java 代码)。
【解决方案3】:

一种可能的方法是:

  1. 创建每天运行的作业(例如 Windows 服务),检查您接收文件的文件夹并将每个 csv 文件拆分为 2 个 csv 文件(type_1 和 type_2)
  2. 在 SQL Server 中创建一个在第一个作业之后运行并使用 BULK INSERT 的作业 将每种类型的文件导入其对应的表中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-19
    • 1970-01-01
    • 1970-01-01
    • 2013-07-02
    • 2021-05-16
    • 1970-01-01
    相关资源
    最近更新 更多