我希望将一个数组从我的 heroku 控制台导出到本地 CSV 文件中。
在我目前的情况下,我每天都有一个 rake 任务,它会查找关于我的应用程序的推文。我想分析这些推文,看看它们是什么时候进来的,等等:
heroku run console
tweets = Tweet.all
code to export tweets into a local CSV file goes here
任何想法将不胜感激!
我希望将一个数组从我的 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
我最终在 localhost 上运行了一个 SSH shell,然后通过 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
感谢你们的帮助,我关注了这个 railscast http://railscasts.com/episodes/362-exporting-csv-and-excel并添加了一种从管理面板导出到 excel 的方法。
再次感谢。
我会使用 Taps 将数据库导出到您的本地计算机,然后在那里对其进行操作:https ://devcenter.heroku.com/articles/taps
您可以向 SCP 支付费用:
my_data = "hello world"
File.write("tmp/data", my_data)
`scp tmp/data me@some-server:`
它可能会提示您服务器未知并要求输入密码。
您还可以使用rails runner
在 heroku 上运行一行或三行代码并将结果通过管道(或 tee)传输到文件:
heroku run rails runner \'Tweet.all.to_csv\' -a my-app-name | all_tweets.csv
如果文件中显示了 Rails 日志记录,则可以禁用它,如果文件中出现“Running `rails runner`”之类的启动记录,则可以修剪文件顶部,但这应该很容易做到。
您可以在 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
我按照建议尝试了 Tee,但由于某种原因,它总是在输出后卡住
Running `console` attached to terminal... up, run.1
所以我最终以文本格式的电子邮件正文为我发送了 csv 内容。如果您已经设置了电子邮件,那也可以是简单的解决方案。
我尝试使用新的 heroku 控制台执行以下步骤。我能够获取日志。
打开heroku控制台并执行命令。
完成后键入 ctrl + d。
终端日志保存在 output.txt 文件中。