我正在开发一个使用多租户gem Milia的Rails项目。 Milia使用基于行的租户,这意味着数据库中的每一行都有一个名为tenant_id
的列,用于确定此数据属于谁。我们使用Heroku和Postgresql。
整个数据库非常庞大,虽然有时我想要完整的生产转储,但更多时候我宁愿只为一个租户提供数据。
那么我想转储整个数据库,但只转储行where tenant_id=x
。 mysqldump
有一个where
条件,但我找不到Postgresql的等价物。
例如,如果我的数据库是这样的:
Table Members
tenant_id, id, name, sex
1, 1, joe, m
1, 2, sally, f
2, 3, bob, m
Table Jobs
tenant_id, id
1, 1
1, 2
2, 3
我希望转储tenant_id
为1
的所有表,我希望得到一个包含以下内容的转储:
Table Members
tenant_id, id, name, sex
1, 1, joe, m
1, 2, sally, f
Table Jobs
tenant_id, id
1, 1
1, 2
答案 0 :(得分:0)
我不确定这是否是最佳做法,但您可以:
CREATE VIEW tweets AS SELECT * FROM contents WHERE provider = 'twitter';
CREATE TABLE tweets_table AS SELECT * FROM tweets;
pg_dump -t tweets_table brainstream_development
另一种选择是创建视图并从中复制psql(psql可以导入它):
CREATE VIEW tweets AS SELECT * FROM contents WHERE provider = 'twitter';
psql -d brainstream_development -A -t -c "select * from tweets" > tweets.dump