Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Liquibase格式化的SQL变更日志和多个文件_Java_Spring_Spring Boot_Liquibase - Fatal编程技术网

Java Liquibase格式化的SQL变更日志和多个文件

Java Liquibase格式化的SQL变更日志和多个文件,java,spring,spring-boot,liquibase,Java,Spring,Spring Boot,Liquibase,我们开始在spring boot上为我们的应用程序使用liquibase。其中一个需求是使用普通sql进行liquibase。我们有许多用于初始化数据库的sql文件。我检查了文档,但没有找到如何创建更改日志sql文件层次结构的信息。Spring引导属性liquibase.change-log等待单个文件。我试图用,或来分隔文件名;从spring引导中获取的所有时间均出错,无法找到更改日志位置。。。 因此,我的问题是: 如何声明另一个或多个sql格式文件的执行?? 与xml等效: 未工作示例fi

我们开始在spring boot上为我们的应用程序使用liquibase。其中一个需求是使用普通sql进行liquibase。我们有许多用于初始化数据库的sql文件。我检查了文档,但没有找到如何创建更改日志sql文件层次结构的信息。Spring引导属性liquibase.change-log等待单个文件。我试图用,或来分隔文件名;从spring引导中获取的所有时间均出错,无法找到更改日志位置。。。 因此,我的问题是: 如何声明另一个或多个sql格式文件的执行?? 与xml等效:

未工作示例first_changelog.sql: -liquibase格式化sql -变更集作者_1:1 更新[dbo]。[customers]SET name='HD_1',其中id='11'; -导入文件=second_changelog.sql -导入文件=third_changelog.sql

请不要建议使用xml,因为我只需要SQL 您可以使用一个XML文件,其中包含对纯sql的多个引用。有关详细信息,请参阅

例如:

<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>
您可以使用一个XML文件,其中包含对纯sql的多个引用。有关详细信息,请参阅

例如:

<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>
所以

似乎您不想使用一个大的格式化SQL变更日志,其中每个变更集都写入文件中。相反,如果您想要使用普通SQL来指向单独的SQL文件,则需要一个如下所示的仅接触一次的变更日志:

<changeLog><includeAll path="/path/to/your/sql/directory"></changeLog>
使用includeAlltells Liquibase将指向的目录中的所有SQL文件拉入,就像它们是单个变更集一样。见:

注:根据您的项目,您可能需要研究-这是一个建立在Liquibase之上的商业解决方案,使这一切变得更加容易。您只需要将SQL文件签入源代码控制,Datical有一个代码打包器,可以验证并生成数据库更改的不可变工件。您可以完全摆脱管理变更日志的工作。

似乎您不想使用一个大的格式化SQL变更日志,其中每个变更集都写入文件中。相反,如果您想要使用普通SQL来指向单独的SQL文件,则需要一个如下所示的仅接触一次的变更日志:

<changeLog><includeAll path="/path/to/your/sql/directory"></changeLog>
使用includeAlltells Liquibase将指向的目录中的所有SQL文件拉入,就像它们是单个变更集一样。见:


注:根据您的项目,您可能需要研究-这是一个建立在Liquibase之上的商业解决方案,使这一切变得更加容易。您只需要将SQL文件签入源代码控制,Datical有一个代码打包器,可以验证并生成数据库更改的不可变工件。您可以完全摆脱管理变更日志的工作。

功能请求仍处于打开状态,解决方案尚未确定 有关更多讨论,请查看以下链接:

Jira中的功能请求Id:

功能请求仍处于打开状态,解决方案尚未确定 有关更多讨论,请查看以下链接:

Jira中的功能请求Id:

我在下面的结构中使用了@Yuriy的答案,它将sql文件作为更改集,而不是sql文件中定义的更改集

<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">
  <include file="changelog.sql"/>
<include file="changelog2.sql"/>
</databaseChangeLog>

我使用了下面的结构,@Yuriy的回答将把sql文件作为一个变更集,而不是sql文件中定义的变更集

<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">
  <include file="changelog.sql"/>
<include file="changelog2.sql"/>
</databaseChangeLog>

使用主XML文件从多个文件加载sql变更集

<?xml version="1.0" encoding="UTF-8"?>
<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.8.xsd">
    <includeAll path="sql/"/>
</databaseChangeLog>

现在,您可以将所有.sql文件存储在sql目录中。甚至它也会从子目录中读取。

使用主XML文件从多个文件加载sql变更集

<?xml version="1.0" encoding="UTF-8"?>
<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.8.xsd">
    <includeAll path="sql/"/>
</databaseChangeLog>

现在,您可以将所有.sql文件存储在sql目录中。甚至它也会从子目录中读取。

谢谢,但由于要求,它不被接受。我只需要简单的sql更改日志文件。谢谢,但由于要求,不接受。我只需要简单的sql更改日志文件。