Maven SQL插件执行顺序
我在排序 sql 执行时遇到一些问题。
我们在一个目录下为每个表都有一个 sql 脚本文件。例如:目录 c:\SqlScripts 中有 user.sql 和 role.sql。我们使用 sql maven 插件来执行这些 sql 文件。
角色表有一个指向用户表的外键,并且执行失败,因为插件尝试在 user.sql 之前执行 role.sql。我无法使用 orderfile 属性,因为我们将其指定为 c:\SqlScripts*.sql。
我该如何克服这个问题?
我看到两种解决方案:
按照创建顺序将所有脚本合并到一个文件中,创建角色的脚本位于创建用户的脚本之后。
删除*通配符并按执行顺序指定属性中的每个文件。
根据执行顺序对文件名进行编号,例如:1_user.sql、2_role.sql,并使用“升序”orderfile 属性(不确定这是否有效,因为可能不应用排序)
任何更优雅的方法解决方案?
I am facing some problem in ordering the sql execution.
We have one sql script file for each table under one directory. Ex: There is user.sql and role.sql in the directory c:\SqlScripts. We are using the sql maven plugin to execute these sql files.
The role table has a Foriegn key to the user table and the execution is failing because the plugin is trying to execute the role.sql before user.sql. I cannot use the orderfile attribute as we specify the as c:\SqlScripts*.sql.
How do I overcome this problem?
I see 2 solutions:
Merge all scripts into one file in the creation order, the script to create role comes after the script to create user.
Remove the * wildcard and specify each file in the attribute in the order of execution.
Number the name of the files according to the execution order ex: 1_user.sql, 2_role.sql and use the 'ascending' orderfile attribute(not sure if this would work though, as the ordering may not be applied)
Any more elegant solutions?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
显然,只有当您没有严格的订购要求时,这才有效。如果你这样做...
...使用允许以确定性方式处理排序的设置。
我认为你钉牢了。我倾向于选择选项 3。
Obviously, this will only work if you don't have strict ordering requirements. If you do...
...use a setup that allows to deal with ordering in a deterministic way.
I think you nailed. My preference goes to option 3.