如何将我的Heroku控制台中的Ruby数组导出为CSV?
我希望将我的heroku控制台中的数组导出到本地CSV文件中。
在我目前的情况下,我有一个每日rake任务,寻找推文谈论我的应用程序。 我想分析这些推文,看看他们什么时候进来,等等:
heroku run console tweets = Tweet.all code to export tweets into a local CSV file goes here
任何想法将不胜感激!
您无法从heroku控制台访问本地文件系统。 一种选择是使用Tee 。 Tee将输出发送到STDOUT和文件,因此您可以拥有打印所有内容的本地日志。
heroku run console | tee output.txt
我按照建议尝试使用Tee,但也陷入困境
Running `console` attached to terminal... up, run.4165
我最终运行了一个SSH shell到localhost,然后通过tee管道。
$ ssh localhost | tee output.txt $ heroku run console
可能不是最好的解决方案,但它对我有用。
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
我使用Taps将数据库导出到本地计算机,然后在那里进行操作: https : //devcenter.heroku.com/articles/taps
感谢您的帮助,我跟踪了这个railscast http://railscasts.com/episodes/362-exporting-csv-and-excel并添加了一种从管理面板导出到Excel的方法。
再次感谢。
您还可以使用rails runner
在heroku上运行一行代码或管道(或tee)将结果传输到文件:
heroku run rails runner \'Tweet.all.to_csv\' -a my-app-name | all_tweets.csv
您可以禁用rails日志记录,如果它出现在您的文件中并修剪文件的顶部,如果您在文件中获得了像“Running`portr runner”这样的启动日志记录,但这应该很容易。
你可以向SCP掏空:
my_data = "hello world" File.write("tmp/data", my_data) `scp tmp/data me@some-server:`
它可能会提示您服务器未知并要求输入密码。
您可以在Heroku实例上运行Ruby:
echo 'p User.first' | heroku run --no-tty 'ruby -W0 -r ./config/environment' > output.txt
这会将第一个用户打印到output.txt
文件。
你也可以在Heroku上运行一个本地脚本,将它传递给stdin。
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
我按照建议尝试了Tee,但由于某种原因它总是在输出后卡住
Running `console` attached to terminal... up, run.1
所以我最终以文本格式的电子邮件正文为我发送了csv内容。 如果您已经设置了电子邮件,那么这也很容易解决。
我尝试使用新的heroku控制台执行以下步骤。我能够获取日志。
- type命令脚本output.txt(这会创建一个名为output.txt的文件来保存终端日志)
-
打开heroku控制台并执行命令。
-
当你完成后输入ctrl + d。
终端日志保存在output.txt文件中。