【发布时间】:2012-05-20 14:29:32
【问题描述】:
我想知道在基于 postgres 的现有表转储的续集中创建迁移的最佳方法。我意识到我必须自己编写 down 方法来删除表/函数/序列,但是有没有办法告诉后续迁移加载现有的 sql 脚本并执行脚本中的所有内容?
编辑: 以防万一不清楚,这是使用 ruby Sequel SQL 库/gem
【问题讨论】:
标签: ruby postgresql migration sequel
我想知道在基于 postgres 的现有表转储的续集中创建迁移的最佳方法。我意识到我必须自己编写 down 方法来删除表/函数/序列,但是有没有办法告诉后续迁移加载现有的 sql 脚本并执行脚本中的所有内容?
编辑: 以防万一不清楚,这是使用 ruby Sequel SQL 库/gem
【问题讨论】:
标签: ruby postgresql migration sequel
您是在问如何使用 PostgreSQL 命令行客户端执行 SQL 脚本吗?如果是这样,答案是使用--file 选项:
psql -U postgres -d mydb -f dump.sql.
【讨论】:
psql 那样让任何客户端读取 PostgreSQL 转储文件。也许您可以自己拨打system 到psql 的电话?
您不会从表转储创建迁移,但您可以使用 Sequel 的 schema_dumper 扩展轻松创建迁移。 sequel 命令行程序中实际上内置了对此的支持:
sequel -d postgres://postgres@localhost/mydb > 001_initial_migration.rb
不支持转储函数或序列,因为它旨在生成独立于数据库的迁移。
如果您正在使用函数和自定义序列,则您完全处于数据库特定领域,最好只使用数据库的工具。
【讨论】:
DB.extension :schema_dumper
query = Vydia::DB.dump_schema_migration({:indexes => true, :foreign_keys => true, :index_names => true})
sequel 有一个扩展名schema_dumper,您可以使用它作为 ruby 将 db 结构转储到迁移文件中,您也可以指定要转储的内容。
【讨论】: