bor*_*ino 1 java spring liquibase spring-boot
我们开始在 spring-boot 上为我们的应用程序使用 liquibase。要求之一对 liquibase 使用纯 sql。我们有很多用于初始化数据库的 sql 文件。我检查文档https://www.liquibase.org/documentation/sql_format.html但没有找到信息如何创建更改日志 sql 文件的层次结构。liquibase.change-log等待单个文件的Spring 引导属性。我试图通过,或;所有时间从 spring-boot 中得到错误来分隔文件名找不到更改日志位置...
所以我的问题:
我如何声明以“sql 格式”执行另一个或多个文件?
像 xml 等价物:<include file="second_changelog.sql"/>
<include file="third_changelog.sql"/>
不工作的例子first_changelog.sql:
--liquibase formatted sql
--changeset author_1:1
UPDATE [dbo].[customers] SET name='HD_1' WHERE id = '11';
--import file=second_changelog.sql
--import file=third_changelog.sql
附注。请不要建议 xml,因为我只需要 SQL
小智 6
所以,
您似乎不想使用一个大格式的 SQL 更改日志,其中每个更改集都写入文件中。相反,如果您想要指向单独的 SQL 文件(使用普通 SQL),则需要有一个仅触及一次的变更日志,如下所示:
<changeLog><includeAll path="/path/to/your/sql/directory"></changeLog>
Run Code Online (Sandbox Code Playgroud)
使用includeAll告诉 Liquibase 提取您指向的目录中的所有 SQL 文件,就好像它们是单独的变更集一样。请参阅:http ://www.liquibase.org/2015/09/liquibase-without-changelogs.html
PS:根据您的项目,您可能需要研究Datical - 这是一个基于 Liquibase 构建的商业解决方案,使这一切变得更加容易。您只需将 SQL 文件签入源代码控制中,Datical 有一个代码打包器,可以验证并生成数据库更改的不可变工件。您可以完全摆脱管理变更日志的工作。
您可以使用一个 XML 文件,其中包含对普通 sql 的多个引用(有关详细信息,请参阅https://www.liquibase.org/documentation/changes/sql_file.html)
例子:
<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.3.xsd">
<changeSet id="init" author="author">
<sqlFile encoding="utf8" path="first_changelog.sql"/>
<sqlFile encoding="utf8" path="second_changelog.sql"/>
</changeSet>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11335 次 |
| 最近记录: |