如何从现有的postgres表转储创建续集迁移?

时间:2012-05-12 03:05:55

标签: ruby postgresql migration sequel

我想知道在续集中创建基于postgres现有表转储的迁移的最佳方法。我意识到我必须自己编写down方法来删除表/函数/序列,但是有没有办法告诉续集上传以加载现有的sql脚本并执行脚本中的所有内容?

编辑: 如果不清楚,这是使用ruby Sequel SQL库/ gem

3 个答案:

答案 0 :(得分:6)

您不会从表转储创建迁移,但您可以使用Sequel的schema_dumper扩展轻松创建一个迁移。在续集命令行程序中实际上内置了对此的支持:

续集-d postgres:// postgres @ localhost / mydb> 001_initial_migration.rb

不支持转储函数或序列,因为它旨在生成与数据库无关的迁移。

如果您使用的是函数和自定义序列,那么您完全处于数据库特定的区域,并且最好只使用数据库的工具。

答案 1 :(得分:-1)

您是否在询问如何使用PostgreSQL命令行客户端执行SQL脚本?如果是这样,答案是使用--file选项:

psql -U postgres -d mydb -f dump.sql.

答案 2 :(得分:-1)

DB.extension :schema_dumper

query = Vydia::DB.dump_schema_migration({:indexes => true, :foreign_keys => true, :index_names => true})

续集有一个扩展名schema_dumper,您可以将其用作ruby将数据库结构转储到迁移文件中,也可以指定要转储的内容。