23

我希望将一个数组从我的 heroku 控制台导出到本地 CSV 文件中。

在我目前的情况下,我每天都有一个 rake 任务,它会查找关于我的应用程序的推文。我想分析这些推文,看看它们是什么时候进来的,等等:

heroku run console
tweets = Tweet.all
code to export tweets into a local CSV file goes here

任何想法将不胜感激!

4

10 回答 10

33

您无法从 heroku 控制台访问本地文件系统。一种选择是使用Tee。Tee 将输出发送到 STDOUT 和文件,因此您可以拥有打印的所有内容的本地日志。

heroku run console | tee output.txt
于 2012-05-27T17:31:14.460 回答
20

我尝试按照建议使用 Tee 并且也陷入了困境

Running `console` attached to terminal... up, run.4165

我最终在 localhost 上运行了一个 SSH shell,然后通过 tee 进行管道传输。

$ ssh localhost | tee output.txt
$ heroku run console

可能不是最好的解决方案,但它对我有用。

于 2013-07-15T22:35:40.033 回答
6

FWIW,您可以很容易地放置一个带有逗号和换行符的字符串,然后将粘贴复制到您的文本编辑器中并另存为 .csv,尽管“所有推文”可能有点笨拙。

tweets = Tweet.all
@string = String.new()
@string << Tweet.last.attributes.keys.join(", ") + "\n" # "header" row with attribute names


tweets.each do |t|
  @string << t.attributes.values.join(", ") + "\n"
end

puts @string #will output string with \n newline which you could then copy paste into your editor and save as a csv
于 2013-02-08T16:16:57.620 回答
2

感谢你们的帮助,我关注了这个 railscast http://railscasts.com/episodes/362-exporting-csv-and-excel并添加了一种从管理面板导出到 excel 的方法。

再次感谢。

于 2012-08-11T23:08:32.360 回答
2

我会使用 Taps 将数据库导出到您的本地计算机,然后在那里对其进行操作:https ://devcenter.heroku.com/articles/taps

于 2012-05-27T14:45:11.880 回答
1

您可以向 SCP 支付费用:

my_data = "hello world"
File.write("tmp/data", my_data)
`scp tmp/data me@some-server:`

它可能会提示您服务器未知并要求输入密码。

于 2014-06-17T22:29:46.197 回答
1

您还可以使用rails runner在 heroku 上运行一行或三行代码并将结果通过管道(或 tee)传输到文件:

heroku run rails runner \'Tweet.all.to_csv\' -a my-app-name | all_tweets.csv

如果文件中显示了 Rails 日志记录,则可以禁用它,如果文件中出现“Running `rails runner`”之类的启动记录,则可以修剪文件顶部,但这应该很容易做到。

于 2015-03-03T08:16:18.133 回答
1

您可以在 Heroku 实例上运行 Ruby:

echo 'p User.first' | heroku run --no-tty 'ruby -W0 -r ./config/environment' > output.txt

这会将第一个用户打印到output.txt文件中。

您还可以通过管道将其连接到标准输入,在 Heroku 上运行本地脚本。

cat my_script.rb | heroku run --no-tty 'ruby -W0 -r ./config/environment' > output.txt

请注意,您可能会收到一些不需要的文本(如警告),这些文本将出现在output.txt文件的开头。您必须手动修剪它或使用修剪命令,例如:

tail -n +4 -f这不会打印前 4 行。

这是完整的示例:

cat my_script.rb | heroku run --no-tty 'ruby -W0 -r ./config/environment' | tail -n +4 -f > output.txt

于 2017-07-12T23:13:03.227 回答
0

我按照建议尝试了 Tee,但由于某种原因,它总是在输出后卡住

Running `console` attached to terminal... up, run.1

所以我最终以文本格式的电子邮件正文为我发送了 csv 内容。如果您已经设置了电子邮件,那也可以是简单的解决方案。

于 2012-11-16T12:08:00.703 回答
0

我尝试使用新的 heroku 控制台执行以下步骤。我能够获取日志。

  1. 键入命令脚本 output.txt(这将创建一个名为 output.txt 的文件以保存终端日志)
  2. 打开heroku控制台并执行命令。

  3. 完成后键入 ctrl + d。

终端日志保存在 output.txt 文件中。

于 2014-09-18T16:54:41.870 回答