Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 开始项目时,将100秒的数据转换为SQL数据库。正确的方法是什么?_Sql Server_Ssis_Dts_Data Conversion - Fatal编程技术网

Sql server 开始项目时,将100秒的数据转换为SQL数据库。正确的方法是什么?

Sql server 开始项目时,将100秒的数据转换为SQL数据库。正确的方法是什么?,sql-server,ssis,dts,data-conversion,Sql Server,Ssis,Dts,Data Conversion,我们将有大约200个csv、excel、PDF、screen scrape文件,所有这些文件都需要进入SQL数据库。因此,对于大多数数据源,都有一个独特的过程 到目前为止,我们只有两个想法: 根据需要编写代码以编程方式加载每个数据源,并根据需要编写代码进行插入这是一种简单的方法,但可能最耗时 为将列从源映射到目标SQL DB的列/表的每个文件编写XML映射。。但是,编写代码来解释这个自定义XML映射文件会变得很复杂吗 我们应该考虑什么其他的工具或方法?我想也许SSIS能帮上忙?这似乎是BizTa

我们将有大约200个csv、excel、PDF、screen scrape文件,所有这些文件都需要进入SQL数据库。因此,对于大多数数据源,都有一个独特的过程

到目前为止,我们只有两个想法:

根据需要编写代码以编程方式加载每个数据源,并根据需要编写代码进行插入这是一种简单的方法,但可能最耗时

为将列从源映射到目标SQL DB的列/表的每个文件编写XML映射。。但是,编写代码来解释这个自定义XML映射文件会变得很复杂吗


我们应该考虑什么其他的工具或方法?我想也许SSIS能帮上忙?这似乎是BizTalk的项目类型,对吗?但是那太贵了

正如Pondlife提到的,在现实世界的解决方案中,随着需求的全部复杂性被揭示,程序化解决方案通常变得越来越难以维护和支持。这一点通常并不明显

我会选择一个好的ETL工具——SSIS通常是目前权衡典型标准的最佳选择。然后,您需要对每个输入的工作天数进行预算。可能最快的实现是每个文件0.5个工作日,包括设计、构建和单元测试,只需非常简单的输入

通过复制第一个包作为其他包的起点,可以节省一些时间

对于像这样的原始输入,我通常通过将数据原封不动地加载到一个临时表来启动每个包。此时,我将每个列作为unicode文本加载。然后,后续的数据流或数据包可以提取并交付该数据。这种方法确实加快了调试、测试和审核的速度——一旦您信任文件负载,就可以使用SQL查询临时表


顺便说一句,SSIS包实际上是一个描述输入、转换和输出需求的XML文档,与第2点类似。

正如Pondlife所提到的,在现实世界的解决方案中,随着需求的全部复杂性被揭示,编程解决方案通常变得越来越难以维护和支持。这一点通常并不明显

我会选择一个好的ETL工具——SSIS通常是目前权衡典型标准的最佳选择。然后,您需要对每个输入的工作天数进行预算。可能最快的实现是每个文件0.5个工作日,包括设计、构建和单元测试,只需非常简单的输入

通过复制第一个包作为其他包的起点,可以节省一些时间

对于像这样的原始输入,我通常通过将数据原封不动地加载到一个临时表来启动每个包。此时,我将每个列作为unicode文本加载。然后,后续的数据流或数据包可以提取并交付该数据。这种方法确实加快了调试、测试和审核的速度——一旦您信任文件负载,就可以使用SQL查询临时表


顺便说一句,SSIS包实际上是一个描述输入、转换和输出需求的XML文档,与第2点类似。

没有通用的正确方法。这只关系到你的具体情况。我会选择阻力最小的道路。这意味着如果一些文件更容易用xml映射,可能是csv、excel等,我会使用xml映射。对于其他xml映射不起作用的地方,我会选择其他方法


实际情况是,某些方法对一种类型的数据源更有效,而其他方法对其他类型的数据源更有效

没有通用的正确方法。这只关系到你的具体情况。我会选择阻力最小的道路。这意味着如果一些文件更容易用xml映射,可能是csv、excel等,我会使用xml映射。对于其他xml映射不起作用的地方,我会选择其他方法


实际情况是,某些方法对一种类型的数据源更有效,而其他方法对其他类型的数据源更有效

Perl。只要对每种文件类型进行黑客攻击,就可以生成一个适合bcp加载到数据库中的分隔文件。通常情况下,您可以在Perl中使用正则表达式甚至从XML文件中获取内容,但是如果您知道XML并且输入的格式确实很好,Perl有很多解析器可以将适当的XML转换为适当的数据

Windows上的Perl也将通过Ole自动化Excel。在那里,这样做,效果和预期的一样好。将文件另存为文本。也许可以迭代它来修复它。必要时重复

我不同意像其他人建议的那样,这种事情不适合编程。它不是完美的,但误差可以逐渐减少,这与手动过程不同

将脚本、输入和输出都保存在不同的目录中。这样您就可以使用Perl或其他什么了 er来计算文件并验证转换。如果您对自己的名字和扩展名很小心,就很容易看出还有什么事情要做。将脚本应用于所有内容,包括加载数据库,以便可以在需要时以幂等方式重新运行它。在您注意到数据库中的数据中存在问题后,您会非常满意,该问题只能通过调整解析器来解决


快乐黑客

Perl。只要对每种文件类型进行黑客攻击,就可以生成一个适合bcp加载到数据库中的分隔文件。通常情况下,您可以在Perl中使用正则表达式甚至从XML文件中获取内容,但是如果您知道XML并且输入的格式确实很好,Perl有很多解析器可以将适当的XML转换为适当的数据

Windows上的Perl也将通过Ole自动化Excel。在那里,这样做,效果和预期的一样好。将文件另存为文本。也许可以迭代它来修复它。必要时重复

我不同意像其他人建议的那样,这种事情不适合编程。它不是完美的,但误差可以逐渐减少,这与手动过程不同

将脚本、输入和输出都保存在不同的目录中。这样,您就可以使用Perl或其他工具来计算文件数量并验证转换。如果您对自己的名字和扩展名很小心,就很容易看出还有什么事情要做。将脚本应用于所有内容,包括加载数据库,以便可以在需要时以幂等方式重新运行它。在您注意到数据库中的数据中存在问题后,您会非常满意,该问题只能通过调整解析器来解决


快乐黑客

所有数据类型的插入代码都应该相同,因此只需将每个类型解析为公共结构。另外请注意,Excel文件可以导出为CSV,对于某些其他数据类型也可能如此。是。这也是一个想法。但是所有数据的目的地都以不同的方式到达不同的地方,所以我并不是说我有很多数据源,只有一个数据目的地,然后每个数据输入类型都需要一个解析器,每个输出类型都需要一个writer,有可能一些iput类型可以自动转换。我不是说这适用于你,但根据我的经验,人们通常会花费数周时间,试图找到一种“通用”的方法来导入数据,而他们本可以花更少的时间为每个数据源编写一个转换脚本。尤其是当您拥有非常异构的数据时,一开始通常不清楚通用解决方案是否可行,所以通常最好使用您喜欢的语言和工具“就这么做”,这样您就可以更好地确定重构常见转换和任务的方法。我倾向于采用不太优雅的编码方式。。在我做了几次之后,会有大量的剪切和粘贴,而不是骄傲地炫耀的代码,但这将完成,而不是试图创建一些花费大量时间并最终变得脆弱的解决方案。所有数据类型的插入代码都应该是相同的,因此您只需要将每个类型解析为一个公共结构。另外请注意,Excel文件可以导出为CSV,对于某些其他数据类型也可能如此。是。这也是一个想法。但是所有数据的目的地都以不同的方式到达不同的地方,所以我并不是说我有很多数据源,只有一个数据目的地,然后每个数据输入类型都需要一个解析器,每个输出类型都需要一个writer,有可能一些iput类型可以自动转换。我不是说这适用于你,但根据我的经验,人们通常会花费数周时间,试图找到一种“通用”的方法来导入数据,而他们本可以花更少的时间为每个数据源编写一个转换脚本。尤其是当您拥有非常异构的数据时,一开始通常不清楚通用解决方案是否可行,所以通常最好使用您喜欢的语言和工具“就这么做”,这样您就可以更好地确定重构常见转换和任务的方法。我倾向于采用不太优雅的编码方式。。在我做了几次之后,会有大量的剪切和粘贴,而不是以展示代码为荣的代码,但这将完成,而不是试图创建一些需要花费大量时间并最终变得脆弱的解决方案SSI将其与代码混合在一起会有什么问题?它是否像创建包一样简单,创建代码发送到包的参数,并将运行包所需的代码和DLL移动到服务器。基本上就是这样吗?我想做二合一。。我的意思是,例如。。有些源是.xls,因此SSI将其转换为表,并将其移动到最终的表中。。。我需要更多地了解SSIS。。我在读取.xls文件时遇到一些问题
n是64位的system@punkouter第一条评论:有一个部署向导需要执行,但它非常简单。SQL 2012在这方面是一个巨大的改进。@punkouter第二条评论:一个SSIS包可以包含多个具有复杂约束的任务visual designer。64位上的xls文件很笨拙,但可以使用Access数据库引擎驱动程序来完成。SSI将其与代码混合在一起会有什么问题?它是否像创建包一样简单,创建代码发送到包的参数,并将运行包所需的代码和DLL移动到服务器。基本上就是这样吗?我想做二合一。。我的意思是,例如。。有些源是.xls,因此SSI将其转换为表,并将其移动到最终的表中。。。我需要更多地了解SSIS。。我在64位上读取.xls文件时遇到一些问题system@punkouter第一条评论:有一个部署向导需要执行,但它非常简单。SQL 2012在这方面是一个巨大的改进。@punkouter第二条评论:一个SSIS包可以包含多个具有复杂约束的任务visual designer。64位上的xls文件很笨拙,但可以使用Access数据库引擎驱动程序来完成。我正在考虑使用XML映射文件来实现真正直截了当的xls文件。。但是,这些文件每年只运行一次,将参数放在代码中而不是XML中真的有那么大的意义吗。。。。。我很乐意使用SSIS来完成一些事情,除了在代码中完成所有工作之外,我还将深入研究SSIS必须完成的工作……好吧。。。。如果是一年一次,那么就选择对你来说更容易的:。如果这不是你经常执行的事情,那也没什么大不了的;我一直在考虑使用XML映射文件的直截了当的方法。。但是,这些文件每年只运行一次,将参数放在代码中而不是XML中真的有那么大的意义吗。。。。。我很乐意使用SSIS来完成一些事情,除了在代码中完成所有工作之外,我还将深入研究SSIS必须完成的工作……好吧。。。。如果是一年一次,那么就选择对你来说更容易的:。如果这不是你经常执行的事情,那也没什么大不了的;