小编Zom*_*Dev的帖子

如何合并SSIS包文件?

我想知道是否有人有任何关于合并SSIS的dtsx文件的建议.这是我看到的让合并变得困难的问题:

  • 它们是xml,已经很难合并了.
  • 它们可以嵌入C#脚本,在这种情况下,它们将同时具有C#源代码和dll文件的base64编码字符串.
  • 它们描述了包中的数据流以及IDE中元素的布局.

如果微软的任何人正在收听,那么通过使包中包含多个文件而不是一个文件来解决许多问题.一个dtsx可以是描述流的xml,描述布局的xml,一些.cs源文件和一些dll.但事实并非如此.让我想知道为什么有人使用dtsx.

一个非解决方案

我在网上看到的唯一解决方案是确保在编辑时锁定dtsx文件,这样只有一个用户可以进行更改.当你只谈论一个分支但是如果你在各个分支(或上帝禁止,DVCS)中使用dtsx的多个副本时,这种方法很好,那么在你做出改变的任何时候都没有可行的方法来锁定它们.除此之外不会真正解决问题,除非你还可以确保没有其他人改变它,然后你可以在任何地方合并它.

version-control merge ssis dvcs

9
推荐指数
2
解决办法
1万
查看次数

使用ruby流式处理并解压缩大型csv文件

我有问题需要下载,解压缩,然后逐行处理一个非常大的CSV文件.我认为让您了解文件的大小是有用的:

  • big_file.zip~700mb
  • big_file.csv~23gb

这是我想要发生的一些事情:

  • 在解压缩之前不必下载整个文件
  • 在解析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,但如果它对这样的东西更好用,我就是为了它).

ruby csv io rubyzip net-http

8
推荐指数
1
解决办法
1708
查看次数

标签 统计

csv ×1

dvcs ×1

io ×1

merge ×1

net-http ×1

ruby ×1

rubyzip ×1

ssis ×1

version-control ×1