从 heroku 下载部分数据库
Download partial database from heroku
我在 rails 上有一个 ruby 应用程序托管在 heroku 上,使用 postgresql 作为其数据库。由于数据库越来越大,我想知道是否有办法从 heroku 下载它的特定部分。例如,是否可以只下载一个特定的 table,或者只下载 parent_id == x.
的行
使用 DATABASE_URL
配置设置,您可以使用 pg_dump
访问您的数据库并使用 -t
开关指定某个 table.
例如,将 table my_table
导出到名为 db.sql
的文件中:
pg_dump -t my_table `heroku config:get DATABASE_URL` > db.sql
如果您需要将下载限制在某些行,那么我认为 pg_dump
无法自行完成这项工作。您可以在 Heroku 数据库中创建另一个 table 以首先定义要下载的行子集,然后 pg_dump
仅转储 table。有关如何执行此操作的一些想法,请参阅此问题:Export specific rows from a PostgreSQL table as INSERT SQL script
除了 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)
您可以提取整个 table 或任意查询(包括连接等)的输出。 table 定义 (DDL) 不会以这种方式导出,但可以使用 pg_dump --schema-only -t ...
.
转储
我在 rails 上有一个 ruby 应用程序托管在 heroku 上,使用 postgresql 作为其数据库。由于数据库越来越大,我想知道是否有办法从 heroku 下载它的特定部分。例如,是否可以只下载一个特定的 table,或者只下载 parent_id == x.
的行使用 DATABASE_URL
配置设置,您可以使用 pg_dump
访问您的数据库并使用 -t
开关指定某个 table.
例如,将 table my_table
导出到名为 db.sql
的文件中:
pg_dump -t my_table `heroku config:get DATABASE_URL` > db.sql
如果您需要将下载限制在某些行,那么我认为 pg_dump
无法自行完成这项工作。您可以在 Heroku 数据库中创建另一个 table 以首先定义要下载的行子集,然后 pg_dump
仅转储 table。有关如何执行此操作的一些想法,请参阅此问题:Export specific rows from a PostgreSQL table as INSERT SQL script
除了 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)
您可以提取整个 table 或任意查询(包括连接等)的输出。 table 定义 (DDL) 不会以这种方式导出,但可以使用 pg_dump --schema-only -t ...
.