我如何从现有的PostgreSQL表转储创建Sequel迁移?

3
我想知道在Sequel中创建基于现有Postgres表转储的迁移的最佳方法。我意识到我必须自己编写down方法来删除表/函数/序列,但是否有一种方法可以告诉Sequel up迁移加载现有的SQL脚本并执行脚本中的所有内容?
编辑: 以防不清楚,这是使用Ruby Sequel SQL库/ gem。
2个回答

8
您不会从表的转储文件创建迁移,但是您可以使用Sequel的schema_dumper扩展轻松创建迁移。实际上,sequel命令行程序中已经内置了此功能支持:
sequel -d postgres://postgres@localhost/mydb > 001_initial_migration.rb
由于这是设计为生成与数据库无关的迁移,因此不支持转储函数或序列。
如果您在使用函数和自定义序列,则完全处于特定于数据库的领域中,并且最好只使用数据库的工具。

谢谢你关于函数和序列的提示,我必须使用它们(用于空间支持)。在这种情况下,我将继续使用数据库工具进行设置。 - kelso

-1
你是在询问如何使用PostgreSQL命令行客户端执行SQL脚本吗?如果是的话,答案是使用--file选项:
psql -U postgres -d mydb -f dump.sql.

不好意思,我表达得不够清楚,它是使用 Ruby Sequel gem,一种类似于 ORM 的东西。 - kelso
1
啊,我对此不太熟悉,但如果有一种直接在SQL中执行操作的方法,你或许可以将文件内容发送到这样的方法调用中。不过,我怀疑你能否像psql那样读取PostgreSQL转储文件。也许你可以自己调用system来执行psql - theory
有一种方法可以传递一个 SQL 字符串,我可以使用它,但我必须解析文件(我想),这并不是我非常想做的事情。如果库中没有我所缺少的任何内置内容,那么调用 psql 的想法应该可行,似乎是一个相当不错的选择。 - kelso

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接