我想知道在续集中创建基于postgres现有表转储的迁移的最佳方法。我意识到我必须自己编写down方法来删除表/函数/序列,但是有没有办法告诉续集上传以加载现有的sql脚本并执行脚本中的所有内容?
编辑: 如果不清楚,这是使用ruby Sequel SQL库/ gem
答案 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将数据库结构转储到迁移文件中,也可以指定要转储的内容。