从heroku下载部分数据库
我使用postgresql作为其数据库在heroku上托管了一个ruby on rails应用程序。 由于数据库变得越来越大,我想知道是否有一种方法只能从heroku下载它的特定部分。 例如,是否可以仅下载一个特定表,或仅下载parent_id == x的行。
除了Steve的正确答案之外,您还可以选择使用psql
连接到DATABASE_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 ...
转储。
使用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
转储该表。 有关如何执行此操作的一些想法,请参阅此问题: 将PostgreSQL表中的特定行导出为INSERT SQL脚本