【问题标题】:Transferring data from a database of unknown structure to a databases of known structure将数据从未知结构的数据库传输到已知结构的数据库
【发布时间】:2011-05-18 19:54:59
【问题描述】:

我有一些需要帮助的挑战。我需要从任意来源将数据拉入我的 SQL 数据库。 细节是:我知道我的数据库的确切结构并且结构不会改变。当我确实接收新数据时,它只会发生一次,在我设置数据库实例时。我将创建我的数据库的许多实例,并且每次它都必须从不同的源中提取数据,并且这些源将以不同的方式构造。 数据很可能包含数千行记录。数据源很可能保存在 Excel、Access、更罕见的 Word 中,甚至更罕见的是,它将保存在 SQL 数据库中。 我可以假设大多数核心数据都是相同的,只是放在不同的位置。尽管有如何举行,他们将遵循一般分组。 本质上,我将数据从遗留系统传输到 SQL 系统,这必须为许多组完成,他们需要自己的数据库私有实例。 关于我将如何做到这一点的任何想法?编写一个可以为我完成大部分工作的程序有多难?

【问题讨论】:

    标签: sql database data-structures database-connection data-transfer


    【解决方案1】:

    这绝对是一个现实世界的问题。是否有可能编写一个可以完成大部分工作的程序?我认为不是大部分,但可能是其中的一部分。

    为目标系统中的每个表创建一个视图,以显示您希望能够插入的源数据。选择便于说明必须做什么的列名;您很可能会选择与INSERT 语句中的目标列匹配的列名。将您的 INSERT 语句保存为存储过程。

    现在,当您获得新格式的新数据源时,您仍然需要重新创建视图,但是一旦视图在您选择的列名下显示正确的数据,您就可以运行存储过程而无需改变。

    【讨论】:

    • 我喜欢制作一些通用视图并将传入数据映射到这些视图的想法。我想制作一个向导类型的程序来帮助用户完成整个过程。理想情况下,我完全不用动手,用户(对计算机只有基本了解)将能够上传他们的数据。此外,我需要从根本上隐藏用户的数据库。你认为这可能吗?
    【解决方案2】:

    我有一个类似类型的项目,从 Access、.ini 文件、文件修改日期和 MySql 中检索数据。我每天早上都会抓取这些数据,然后基本上附加到一组 SqlServer 架构中。

    我创建了一个 DataTable,并在迭代一组目录时,将数据插入到每个新行中。完成 DataTable 后,我将执行批量复制以附加到数据库。

    希望对你有所帮助。我知道我的项目并未涵盖您问题的所有方面;但也没有 DBA 来提供视图、存储过程等。我也没有额外的时间投入到这些事情上。不是最有利的条件,但就是这样。

    HTH...

    【讨论】:

    • 感谢您的建议。我正在考虑将程序分成不同的模块,一个用于每个不同的源(即一个用于 excel,一个用于访问..),然后尝试利用他们的工具。但是,在某些时候,我希望尽可能放手。你认为我可以让这大部分自动化
    • 我一直在寻找一种称为 ETL 的东西,我想如果您查看一些 ETL 软件,您会发现它会自动为您完成这项工作。
    【解决方案3】:

    解决此问题的最佳方法是使用 ETL(Extract-Transform-Load)解决方案。一个不错的选择是通过微软的 BI 套件的 SSIS。

    【讨论】:

      【解决方案4】:

      这是意识或基础的基石……

      1 一个类似dna,组织数千个文件的数据库,

      2 用户界面

      隐藏 3 个部分,防止系统崩溃/崩溃

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-01-12
        • 2023-04-09
        • 1970-01-01
        • 2010-10-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多