我想知道是否有人有任何关于合并SSIS的dtsx文件的建议.这是我看到的让合并变得困难的问题:
如果微软的任何人正在收听,那么通过使包中包含多个文件而不是一个文件来解决许多问题.一个dtsx可以是描述流的xml,描述布局的xml,一些.cs源文件和一些dll.但事实并非如此.让我想知道为什么有人使用dtsx.
一个非解决方案
我在网上看到的唯一解决方案是确保在编辑时锁定dtsx文件,这样只有一个用户可以进行更改.当你只谈论一个分支但是如果你在各个分支(或上帝禁止,DVCS)中使用dtsx的多个副本时,这种方法很好,那么在你做出改变的任何时候都没有可行的方法来锁定它们.除此之外不会真正解决问题,除非你还可以确保没有其他人改变它,然后你可以在任何地方合并它.
我有问题需要下载,解压缩,然后逐行处理一个非常大的CSV文件.我认为让您了解文件的大小是有用的:
这是我想要发生的一些事情:
我不知道这是否可能.这就是我的想法:
require 'open-uri'
require 'rubyzip'
require 'csv'
open('http://foo.bar/big_file.zip') do |zipped|
Zip::InputStream.open(zipped) do |unzipped|
sleep 10 until entry = unzipped.get_next_entry && entry.name == 'big_file.csv'
CSV.foreach(unzipped) do |row|
# process the row, maybe write out to STDOUT or some file
end
end
end
Run Code Online (Sandbox Code Playgroud)
这是我所知道的问题:
open-uri读取整个响应并将其保存到Tempfile这个大小的文件中.我可能需要Net::HTTP直接使用,但我不知道该怎么做,仍然得到一个IO.Zip::InputStream我的工作方式是否正常.当它不是全部时,它可以解压缩一些文件吗?CSV.foreach用rubyzip的工作InputStream?它的行为是否足以File解析行?如果它想要读取但缓冲区是空的,它会变得怪异吗?我不知道这是否是正确的做法.也许一些EventMachine解决方案会更好(虽然我以前从未使用过EventMachine,但如果它对这样的东西更好用,我就是为了它).