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