从heroku下载部分数据库

时间:2015-05-25 21:12:18

标签: ruby-on-rails database postgresql heroku partial

我使用postgresql作为数据库,在heroku上托管了一个ruby on rails应用程序。由于数据库变得越来越大,我想知道是否有一种方法只能从heroku下载它的特定部分。例如,是否可以仅下载一个特定表,或仅下载带有parent_id == x。

的行

2 个答案:

答案 0 :(得分:3)

使用DATABASE_URL配置设置,您可以使用pg_dump访问您的数据库,并使用-t开关指定某个表格。

例如,要将表my_table导出到名为db.sql的文件中:

pg_dump -t my_table `heroku config:get DATABASE_URL` > db.sql

如果您需要将下载限制为特定行,那么我不认为pg_dump会自行完成这项工作。您可以在Heroku数据库中创建另一个表,首先定义要下载的行的子集,然后pg_dump仅转储该表。有关如何执行此操作的一些想法,请参阅此问题:Export specific rows from a PostgreSQL table as INSERT SQL script

答案 1 :(得分:3)

除了史蒂夫非常正确的答案之外,您还可以选择使用psqlDATABASE_URL并使用\copy进行连接,例如

$ psql "$(heroku config:get DATABASE_URL)"

mydb=> \copy mytable TO 'mytable.csv' WITH (FORMAT CSV, HEADER)

mydb=> \copy (SELECT col1, col2 FROM mytable2 WHERE ...) TO 'mytable2_partial.csv' WITH (FORMAT CSV, HEADER)

您可以提取整个表,或任意查询的输出(包括连接等)。表定义(DDL)不以这种方式导出,但可以使用pg_dump --schema-only -t ...转储。