5. 配置选项说明及参数
本章是 LightDB-ETL 对 config 目录下的 application.properties 配置文件配置选项进行详细介绍 。
5.1. etl.global.runModel
表示当前程序是否是常驻进程,0表示数据迁移完成后自动退出,1表示可重复执行但目前依赖Lightdb-EM。默认配置是0。
参数(值) |
说明 |
示例 |
---|---|---|
0 |
表示数据迁移完成后自动退出 |
etl.global.runModel=0 |
1 |
可重复执行但目前依赖Lightdb-EM |
etl.global.runModel=1 |
5.3. etl.global.sourceDatabase
表示迁移的源数据库名称。
参数(值) |
说明 |
示例 |
---|---|---|
oracle |
迁移的源数据库为Oracle数据库 |
etl.global.sourceDatabase=oracle |
5.4. etl.global.targetDatabase
表示迁移的目标数据库名称。
参数(值) |
说明 |
示例 |
---|---|---|
lightdb |
迁移的到Lightdb-X的数据库 |
etl.global.targetDatabase=lightdb |
lightdb-a |
迁移的到Lightdb-A的数据库 |
etl.global.targetDatabase=lightdb-a |
5.5. etl.target.jdbc.mode(指定lightdb兼容模式)
表示迁移目标库的兼容模式,目前仅支持指定lightdb-oracle、lightdb-pg模式,示例如下:
#表示目标库是lightdb的pg模式
etl.target.jdbc.mode=lightdb-pg
#表示目标库是lightdb的oracle模式
etl.target.jdbc.mode=lightdb-oracle
5.6. etl.global.showSql
表示迁移的过程中日志是否打印SQL。
参数(值) |
说明 |
示例 |
---|---|---|
true |
日志打印SQL |
etl.global.showSql=true |
false |
默认值,日志不打印SQL |
etl.global.showSql=false |
5.7. etl.global.fastFail
表示迁移的过程迁移出错时,是否立即终止。
参数(值) |
说明 |
示例 |
---|---|---|
true |
迁移出错时,程序立即终止 |
etl.global.fastFail=true |
false |
默认值,迁移出错时,程序继续运行 |
etl.global.fastFail=false |
5.8. etl.source.onCommitPreserveRows
表示迁移全局临时表时是否保留会话级,默认false迁移全局临时表时不保留会话级。
参数(值) |
说明 |
示例 |
---|---|---|
true |
保留全局临时表的会话级 |
etl.source.onCommitPreserveRows=true |
false |
不保留全局临时表的会话级 |
etl.source.onCommitPreserveRows=false |
5.9. etl.global.removeDoubleQuote
表示迁移转化过程SQL语句中元素(表、列、视图等)上的双引号是否移除,默认true。
参数(值) |
说明 |
示例 |
---|---|---|
true |
默认值,迁移转化过程SQL语句中元素上的双引号移除 |
etl.global.removeDoubleQuote=true |
false |
迁移转化过程SQL语句中元素上的双引号不移除 |
etl.global.removeDoubleQuote=false |
5.10. etl.global.plpgSql
表示存储过程的DDL语句的转换成Postgres和Oracle语法,默认值false。
参数(值) |
说明 |
示例 |
---|---|---|
true |
表示存储过程的迁移方向是Postgres |
etl.global.plpgSql=true |
false |
表示存储过程的迁移方向是Oracle |
etl.global.plpgSql=false |
5.11. etl.global.ignoreCase
对比时,是否忽略对象名的大小写,默认值true,忽略大小写。
参数(值) |
说明 |
示例 |
---|---|---|
true |
表示对比时,忽略大小写 |
etl.global.ignoreCase=true |
false |
表示对比时,不忽略大小写 |
etl.global.ignoreCase=false |
5.12. etl.global.ignoreCaseMixing
对比时,是否忽略大小写混合的对象名,默认false,不忽略。
参数(值) |
说明 |
示例 |
---|---|---|
true |
表示对比时,忽略大小写 |
etl.global.ignoreCaseMixing=true |
false |
表示对比时,不忽略大小写 |
etl.global.ignoreCaseMixing=false |
5.13. etl.global.syncTableDataOpenTruncate
迁移表数据时,是否使用truncate清空目标库对应表的数据。默认值false。
参数(值) |
说明 |
示例 |
---|---|---|
true |
迁移表数据时,使用truncate清空目标库对应表数据 |
etl.global.syncTableDataOpenTruncate=true |
false |
迁移表数据时,不清空目标库对应表数据 |
etl.global.syncTableDataOpenTruncate=false |
5.14. etl.global.compileOracleProcedure
迁移存储过程时时候,是否重新编译无效的存储过程。默认值false。
参数(值) |
说明 |
示例 |
---|---|---|
true |
重新编译源库无效的存储过程。 |
etl.global.compileOracleProcedure=true |
false |
不编译源库无效的存储过程。 |
etl.global.compileOracleProcedure=false |
5.15. etl.global.onlyTransferTempTables
是否只迁移临时表,默认值false。
参数(值) |
说明 |
示例 |
---|---|---|
true |
只迁移临时表 |
etl.global.onlyTransferTempTables=true |
false |
不只迁移临时表 |
etl.global.onlyTransferTempTables=false |
5.16. etl.global.compareAll
是否打印比对的所有内容,默认未true。
参数(值) |
说明 |
示例 |
---|---|---|
true |
打印比对的所有内容 |
etl.global.compareAll=true |
false |
表结构对比,只打印目标库的字符类型长度小的情况 |
etl.global.compareAll=false |
5.17. etl.global.excludeColumns
数据迁移时,指定排除某个表的某个列不进行数据迁移,可配置多个表的列,格式:;
分割多个表,每个表的列使用 []
加 ,
号分割。例子如下:
etl.global.excludeColumns=tab1[col1,col2,col3];tab2[col1,col2,col3]
5.18. etl.global.booleanColumns
需要进行bool类型和varchar类型转换的列,可配置多个表的列,格式: ;
分割多个表,每个表的列使用 []
加 ,
号分割。例子如下:
etl.global.booleanColumns=tab1[col1,col2,col3];tab2[col1,col2,col3]
5.19. etl.global.bool2charmode
bool类型和字符类型相互转换的模式,取值只能是0、1、2。
参数(值) |
说明 |
示例 |
---|---|---|
0 |
表示字符的1/0对应bool的true/false,其他对应null。 |
etl.global.bool2charmode=0 |
1 |
表示字符的t/f对应bool的true/false,其他对应null。 |
etl.global.bool2charmode=1 |
2 |
表示字符的true/false对应bool的true/false,其他对应null。 |
etl.global.bool2charmode=2 |
5.20. etl.global.packageRegex
在package的ddl语句中查找出package body的ddl语句的正则表达式。 默认值是(?i)CREATE\s*OR\s*REPLACE\s*PACKAGE\s*BODY
etl.global.packageRegex=(?i)CREATE\\s*OR\\s*REPLACE\\s*PACKAGE\\s*BODY
5.21. etl.global.typeRegex
在type的ddl语句中查找出type body的ddl语句的正则表达式。 默认值是(?i)CREATEs*ORs*REPLACEs*TYPEs*BODY
etl.global.typeRegex=(?i)CREATE\s*OR\s*REPLACE\s*TYPE\s*BODY
5.22. etl.global.syncCustomTableData
oracle到oboracle时的表数据同步配置,根据配置相对应的查询sql,来同步查询sql对应的数据。一个查询sql只支持一张表,多个查询直接用英文分号分隔
etl.global.syncCustomTableData=etl.global.syncCustomTableData=SELECT * FROM table_a WHERE id=123;SELECT * FROM table_b WHERE id in (111,222,333)
5.23. etl.global.customException
配置自定义异常名,多个异常名用逗号隔开,当函数中自定义异常名被配置后,会替换成pg的自定义异常语法。示例如下:
etl.global.customException=ERROROCCURRED,E_ERROROCCURRED
5.24. etl.global.errorSaveLightdbSchema
oracle迁移到lightdb时,指定迁移报错内容在目标库上的存储schema,会在比对报告打印报错内容,必须指明schema和table两个参数才生效。示例如下:
etl.global.errorSaveLightdbSchema=lt_test
5.25. etl.global.errorSaveLightdbTable
oracle迁移到lightdb时,指定迁移报错内容在目标库上的存储table,会在比对报告打印报错内容,必须指明schema和table两个参数才生效。示例如下:
etl.global.errorSaveLightdbTable=err_table
5.27. etl.global.concurrentThreadCount
配置数据迁移的线程数,默认是32。需要参考表数据的大小、内存的大小来控制线程数,详细内存和线程关系,参考第二章的内存举例。示例如下:
etl.global.concurrentThreadCount=8
5.28. etl.global.includeTableRegexp
表示只迁移符合要求的表、表数据。其中迁移的源数据库的表名是正则表达式,默认为空。示例如下:
etl.global.includeTableRegexp=^tablename1$
迁移多个表可配置
etl.global.includeTableRegexp=(^tablename1$)|(^tablename2$)|(^tablename3$)
5.29. etl.global.excludeTableRegexp
表示不会迁移符合要求的表,默认为空。
etl.global.includeTableRegexp=^tablename1$
排除多个表可配置
etl.global.includeTableRegexp=(^tablename1$)|(^tablename2$)|(^tablename3$)
5.30. etl.global.transferSchemas
表示需要迁移的源数据库的模式,可以多选,用英文逗号隔开,与目标库的模式是一一对应。
etl.global.transferSchemas=schema1,schema2
5.31. etl.global.targetSchemas
表示需要迁移的目标数据库的模式,可以多选,用英文逗号隔开,与源库的模式是一一对应。
etl.global.targetSchemas=schema1,schema2
5.32. etl.global.transferOnlyProcedures
表示仅需要迁移的数据库存储过程,可以多选,用英文逗号隔开。示例如下:
etl.global.transferOnlyProcedures=procedureName1,procedureName2
5.34. etl.global.enableFunctions
表示迁移数据库的功能,可以多选,用英文逗号隔开
参数(值) |
说明 |
---|---|
TransferTable |
迁移表结构 |
TransferTableFK |
迁移表的外键 |
TransferTablePK |
迁移表的主键 |
TransferTableCheckConstraints |
迁移check约束 |
TransferIndex |
迁移索引 |
TransferTableData |
数据迁移 |
TransferSynonym |
迁移同义词 |
TransferType |
迁移类型 |
TransferSequence |
迁移序列 |
TransferView |
迁移视图 |
TransferTrigger |
迁移触发器 |
TransferPackage |
迁移包 |
TransferProcedure |
迁移存储过程 |
TransferFunction |
迁移函数 |
TableCompare |
表结构对比:对比表名、列名、数据类型、精度、标度、长度 |
TableDataCompare |
数据对比:对比表数据是否相同 |
TypeCountCompare |
对象对比:对比表名、表量、表数据行数;对比视图、索引、存储过程、函数数量、包、类型 |
示例如下:
etl.global.enableFunctions=TransferTable,TransferSequence,TransferTableData,TransferIndex,TransferView,TransferTrigger,TransferPackage,TransferType,TransferProcedure,TransferFunction,TableCompare,TableDataCompare,TypeCountCompare
5.35. etl.source.jdbc.url
配置迁移的源数据库jdbc url,示例如下:
#oracle
etl.source.jdbc.url=jdbc:oracle:thin:@ip:port/service_name
#mysql
etl.source.jdbc.url=jdbc:mysql://ip:port/dbname
5.38. etl.target.jdbc.url
配置迁移的目标数据库jdbc的url,示例是lightdb的jdbc的url配置,更多参数参考( lt_jdbc )。如下:
#lightdb-pg模式
etl.target.jdbc.url=jdbc:postgresql://ip:port/dbname
#lightdb-oracle模式
#lightdbSyntaxCompatibleType=oracle 表示兼容模式是oracle
#enforceUtf8 强制使用UTF-8编码会自动从字符串中删除空字符(“0”或0x00)
#更多配置参数参考ltjdbc官网
etl.target.jdbc.url=jdbc:postgresql://ip:port/dbname?options=-c%20search_path=public,oracle,lt_catalog&lightdbSyntaxCompatibleType=oracle&reWriteBatchedInserts=true&enforceUtf8=true
#gaussdb500-oracle模式
etl.target.jdbc.url=jdbc:opengauss://ip:port/dbname
5.41. etl.global.maxOrderByCount
表示源库和目标库数据比对时查询sql的order by子句允许的最大列数。当完成数据迁移后,需比对源库和目标库的数据,以验证数据迁移是否正确,需对源库表和目标库表分别执行select col1,col2,…,coln from tabname order by col1,col2…
参数(值) |
说明 |
示例 |
---|---|---|
5 |
表示源库和目标库数据比对时查询sql的order by子句允许的最大列数 |
etl.global.maxOrderByCount=5 |
5.42. etl.global.orderByColumns
表示用户指定某张表在数据比对时排序字段,格式为:tablename1[col1,col2,col3];tablename2[col1,col2,col3]
参数(值) |
说明 |
示例 |
---|---|---|
tablename1[col1,col2,col3];tablename2[col1,col2,col3] |
指定某张表在数据比对时排序字段 |
etl.global.orderByColumns=tablename1[col1,col2,col3];tablename2[col1,col2,col3] |
5.43. etl.global.dataTransformColumns
表示表字段中某些值需要做转换,其转换规则是什么。例如mysql库中的datetime类型字段存在’0000-00-00 00:00:00’的非法数据,导致数据迁移不过去,该参数就是用来配置哪些表的哪些字段的什么值需做这样的日期转换,格式为tablename1[col1(‘val1’,’val2’); col2(‘val1’,’val2’)]|tablename2[col1(‘val1’,’val2’); col2(‘val1’,’val2’)] 注:该参数目前仅在源库是mysql时使用
参数(值) |
说明 |
示例 |
---|---|---|
tablename1[col1(‘val1’,’val2’); col2(‘val1’,’val2’)]|tablename2[col1(‘val1’,’val2’); col2(‘val1’,’val2’)] |
表示表数据迁移时字段值的转换规则 |
etl.global.dataTransformColumns=tablename1[col1(‘val1’,’val2’); col2(‘val1’,’val2’)]|tablename2[col1(‘val1’,’val2’); col2(‘val1’,’val2’)] |
5.44. etl.global.blankStrTransformTo
表示将空字符串转成什么值,例如mysql库Mysql中将空字符串(‘’)当成非空,因此可以在非空列上建主键,插入空字符串;而目标库可能将空字符串当成null处理,这样可能导致主键无法创建,数据迁移时报错,因此需将空字符串转成自定义值后再做数据迁移 注:该参数目前仅在源库是mysql时使用
参数(值) |
说明 |
示例 |
---|---|---|
u0020 |
表示空字符串需要转换成什么值 |
etl.global.blankStrTransformTo=u0020(该unicode表示空格) |