Liquibase loadData 不使用我加载我的 CSV 但不是错误
Liquibase loadData doesn't use my load my CSV but not error
我正在尝试使用 liquibase 从 CSV 加载数据,我的问题是脚本 运行 没有错误,但是我的 table 中没有数据,这里是我的配置
<?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">
<changeSet id="1" author="dev">
<createTable tableName="products">
<column name="code" type="varchar(3)">
<constraints primaryKey="true"/>
</column>
<column name="name" type="text"/>
</createTable>
</changeSet>
<changeSet id="2" author="dev">
<loadData tableName="products"
file="data_products.csv"
separator=";"
relativeToChangelogFile="true"/>
</changeSet>
</databaseChangeLog>
在我的文件中data_products.csv我有这样的东西
code;name
000;product1
001;product2
这是我 运行 我的项目时的控制台日志:
2021-01-15 11:21:18.986 INFO 9540 --- [main] liquibase.changelog: Creating database history table with name: public.databasechangelog
2021-01-15 11:21:18.993 INFO 9540 --- [main] liquibase.changelog: Reading from public.databasechangelog
2021-01-15 11:21:19.047 INFO 9540 --- [main] liquibase.changelog: Table products created
2021-01-15 11:21:19.048 INFO 9540 --- [main] liquibase.changelog: ChangeSet liquibase/sql/1.0.0/init_db.xml::1::dev ran successfully in 8ms
2021-01-15 11:21:19.156 INFO 9540 --- [main] liquibase.changelog: Data loaded from data_products.csv into products
2021-01-15 11:21:19.156 INFO 9540 --- [main] liquibase.changelog: ChangeSet liquibase/sql/1.0.0/init_db.xml::2::dev ran successfully in 104ms
2021-01-15 11:21:19.160 INFO 9540 --- [main] liquibase.lockservice: Successfully released change log lock
我不知道我的配置有什么问题,因为日志显示数据已加载,但是当我在我的 table 中执行 select 时,我里面什么也没有
我确实找到了解决方案,问题出在列名中的类型,
如果您将文本用于带有 liquibase 的类型,它会在数据库中作为 CLOB 执行,然后它不会加载数据,
我刚换了
<column name="name" type="text"/>
至
<column name="name" type="varchar"/>
没有尺码但有效!
我正在尝试使用 liquibase 从 CSV 加载数据,我的问题是脚本 运行 没有错误,但是我的 table 中没有数据,这里是我的配置
<?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">
<changeSet id="1" author="dev">
<createTable tableName="products">
<column name="code" type="varchar(3)">
<constraints primaryKey="true"/>
</column>
<column name="name" type="text"/>
</createTable>
</changeSet>
<changeSet id="2" author="dev">
<loadData tableName="products"
file="data_products.csv"
separator=";"
relativeToChangelogFile="true"/>
</changeSet>
</databaseChangeLog>
在我的文件中data_products.csv我有这样的东西
code;name
000;product1
001;product2
这是我 运行 我的项目时的控制台日志:
2021-01-15 11:21:18.986 INFO 9540 --- [main] liquibase.changelog: Creating database history table with name: public.databasechangelog
2021-01-15 11:21:18.993 INFO 9540 --- [main] liquibase.changelog: Reading from public.databasechangelog
2021-01-15 11:21:19.047 INFO 9540 --- [main] liquibase.changelog: Table products created
2021-01-15 11:21:19.048 INFO 9540 --- [main] liquibase.changelog: ChangeSet liquibase/sql/1.0.0/init_db.xml::1::dev ran successfully in 8ms
2021-01-15 11:21:19.156 INFO 9540 --- [main] liquibase.changelog: Data loaded from data_products.csv into products
2021-01-15 11:21:19.156 INFO 9540 --- [main] liquibase.changelog: ChangeSet liquibase/sql/1.0.0/init_db.xml::2::dev ran successfully in 104ms
2021-01-15 11:21:19.160 INFO 9540 --- [main] liquibase.lockservice: Successfully released change log lock
我不知道我的配置有什么问题,因为日志显示数据已加载,但是当我在我的 table 中执行 select 时,我里面什么也没有
我确实找到了解决方案,问题出在列名中的类型,
如果您将文本用于带有 liquibase 的类型,它会在数据库中作为 CLOB 执行,然后它不会加载数据,
我刚换了
<column name="name" type="text"/>
至
<column name="name" type="varchar"/>
没有尺码但有效!