Tag: csv

加快csv导入

我想导入大量的cvs数据(不是直接导入AR,但经过一些提取后),而且我的代码非常慢。 def csv_import require ‘csv’ file = File.open(“/#{Rails.public_path}/uploads/shate.csv”) csv = CSV.open(file, “r:ISO-8859-15:UTF-8”, {:col_sep => “;”, :row_sep => :auto, :headers => :first_row}) csv.each do |row| #ename,esupp= row[1].split(/_/) #(ename,esupp,foo) = row[1]..split(‘_’) abrakadabra = row[0].to_s() (ename,esupp) = abrakadabra.split(/_/) eprice = row[6] eqnt = row[1] # logger.info(“1) “) # logger.info(ename) # logger.info(“—“) # logger.info(esupp) #—- #ename = row[4] #eprice […]

将CSV数据导入ruby数组/变量

我正在尝试使用CSV作为SiriProxy项目插件中的设置文件来使用wake-on-lan。 这个项目基于ruby。 所以csv如下: Name, MACAddress Desktop, 01-23-45-67-89-ab Computer, 02-46-81-02-46-cd 等等… 所以我想要发生的是,例如,当变量userAction是“桌面”时,我查询CSV并将MAC地址返回到另一个变量。 我迷失了如何做到这一点。 我见过csv和faster_csv,但不知道如何让这些工作像这样。 提前致谢!

使用Ruby CSV提取一列

我一直在尝试从csv文件中获取单个列。 我已经阅读了文档, http://www.ruby-doc.org/stdlib/libdoc/csv/rdoc/index.html但仍然不太了解如何使用它。 如果我使用CSV.table ,与CSV.read相比,响应速度非常慢。 我承认我加载的数据集非常大,这正是我只想从中获取单个列的原因。 我的请求目前看起来像这样 @dataTable = CSV.table(‘path_to_csv.csv’) 当我调试时,我收到了回复 # 文档说我应该能够使用by_col() ,但是当我尝试输出时 它给了我“未定义的方法’col’错误” 有人可以向我解释我应该如何使用CSV? 如果有一种方法可以使用’read’代替’table’来更快地获取列? 我正在使用Ruby 1.92,它说它使用的是更快的CS,因此我不需要使用FasterCSV gem。

在ruby中处理大型CSV文件(20G)

我正在解决一些小问题,并且会就如何解决它提出一些建议:给定一个列数和行数未知的csv文件,输出一个包含值的列列表以及每个值重复的次数。 不使用任何库。 如果文件很小这应该不是问题,但是当它是几个Gigs时,我得到NoM​​emoryError:无法分配内存。 有没有办法创建一个哈希并从磁盘读取而不是将文件加载到内存? 你可以在perl中使用绑定哈希来做到这一点 编辑:IO#foreach会将文件加载到内存中吗? File.open(filename).each怎么样?

你如何使用Ruby CSV转换器?

假设您有以下文件: textfield,datetimefield,numfield foo,2008-07-01 17:50:55.004688,1 bar,2008-07-02 17:50:55.004688,2 读取.csv的Ruby代码如下: #!/usr/bin/env ruby require ‘csv’ csv = CSV($stdin, :headers => true, :converters => :all) csv.each do |row| print “#{row}” the_date = row[‘datetimefield’].to_date end 该代码提供此错误消息: ./foo2.rb:8:in `block in ‘: undefined method `to_date’ for “2008-07-01 17:50:55.004688”:String (NoMethodError) 是什么赋予了? 我已经阅读了文档 ,但我没理解。 编辑 :是的,我可以单独解析字段。 这个问题的关键是我想学习如何使用记录的转换器function。

将行附加到csv文件Ruby 1.9 CSV lib

使用Ruby 1.9和CSV lib,我似乎无法追加一行。 文档中的示例打开文件,并覆盖该行。 将行附加到文档的正确方法是什么? 文档示例: require ‘csv’ CSV.open(“path/to/file.csv”, “wb”) do |csv| csv << ["row", "of", "CSV", "data"] csv << ["another", "row"] # … end

如何在Ruby on Rails中下载CSV文件?

在我的InvoicesController我有这个: def index @invoices = current_user.invoices respond_to do |format| format.html format.xls format.csv # not working! end end 在我的index.html.erb视图中,我有以下两个下载链接: “xsl”) %> “csv”) %> 模板index.xsl.erb和index.csv.erb也存在。 第一个链接有效,即Excel文件被下载到用户的计算机。 但是,CSV文件在浏览器中呈现而不是下载。 我还必须做些什么才能让用户下载CSV文件? 谢谢你的帮助。

如何将我的Heroku控制台中的Ruby数组导出为CSV?

我希望将我的heroku控制台中的数组导出到本地CSV文件中。 在我目前的情况下,我有一个每日rake任务,寻找推文谈论我的应用程序。 我想分析这些推文,看看他们什么时候进来,等等: heroku run console tweets = Tweet.all code to export tweets into a local CSV file goes here 任何想法将不胜感激!

Ruby:无法解析在OS X中导出为CSV的Excel文件

我正在使用Ruby的CSV库来解析一些CSV。 我有一个看似格式正确的CSV文件,我通过将Excel文件导出为CSV来创建。 但CSV.open(filename, ‘r’)会导致CSV::IllegalFormatError 。 文件中没有流氓逗号或引号,也没有任何我可以看到可能导致问题的内容。 我怀疑问题可能与行结尾有关。 我能够解析通过文本编辑器(Aquamacs)手动输入的数据。 就在我尝试从Excel(OS X)导出的数据时,会出现问题。 当我在vim中打开导出的CSV时,所有文本都显示在一行上,行之间出现^M 从文档中,似乎你可以提供一个行分隔符; 但我不确定在这种情况下应该是什么。

快速处理大量CSV数据的最佳方式

我有需要处理的大型CSV数据集(10M +行)。 我还有两个需要为输出引用的文件 – 它们包含的数据可以放大我们对CSV文件中数百万行的了解。 目标是输出一个新的CSV文件,其中每个记录与其他文件中的附加信息合并。 想象一下,大型CSV文件有交易,但客户信息和账单信息记录在另外两个文件中,我们想要输出一个新的CSV,每个交易都链接到客户ID和账户ID等。 一位同事有一个用Java编写的function程序来执行此操作,但速度非常慢。 原因是具有数百万行的CSV文件显然需要经过许多次,多次。 我的问题是 – 是的,我正在接受它 – 我应该如何在Ruby中解决这个问题? 目标是让它更快(现在18小时以上,CPU活动很少) 我可以将这么多记录加载到内存中吗? 如果是这样,我该怎么做? 我知道这有点模糊。 只是寻找想法,因为这对我来说有点新鲜。