4. 配置选项说明及参数
本章是 LightDB-ETL 对 config 目录下的 application.properties 配置文件配置选项进行详细介绍 。
4.1. etl.global.runModel
表示当前程序是否是常驻进程,0表示数据迁移完成后自动退出,1表示可重复执行但目前依赖Lightdb-EM。默认配置是0。
参数(值) |
说明 |
示例 |
---|---|---|
0 |
表示数据迁移完成后自动退出 |
etl.global.runModel=0 |
1 |
可重复执行但目前依赖Lightdb-EM |
etl.global.runModel=1 |
4.2. logging.config
表示日志配置路径。
参数(值) |
说明 |
示例 |
---|---|---|
classpath:log4j2.xml |
日志配置路径,勿动 |
classpath:log4j2.xml |
4.3. etl.global.sourceDatabase
表示迁移的源数据库名称。
参数(值) |
说明 |
示例 |
---|---|---|
oracle |
迁移的源数据库为Oracle数据库 |
etl.global.sourceDatabase=oracle |
4.4. etl.global.targetDatabase
表示迁移的目标数据库名称。
参数(值) |
说明 |
示例 |
---|---|---|
lightdb |
迁移的到Lightdb-X的数据库 |
etl.global.targetDatabase=lightdb |
lightdb-a |
迁移的到Lightdb-A的数据库 |
etl.global.targetDatabase=lightdb-a |
4.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
4.6. etl.global.showSql
表示迁移的过程中日志是否打印SQL。
参数(值) |
说明 |
示例 |
---|---|---|
true |
日志打印SQL |
etl.global.showSql=true |
false |
默认值,日志不打印SQL |
etl.global.showSql=false |
4.7. etl.global.fastFail
表示迁移的过程迁移出错时,是否立即终止。
参数(值) |
说明 |
示例 |
---|---|---|
true |
迁移出错时,程序立即终止 |
etl.global.fastFail=true |
false |
默认值,迁移出错时,程序继续运行 |
etl.global.fastFail=false |
4.8. etl.source.onCommitPreserveRows
表示迁移全局临时表时是否保留会话级,默认false迁移全局临时表时不保留会话级。
参数(值) |
说明 |
示例 |
---|---|---|
true |
保留全局临时表的会话级 |
etl.source.onCommitPreserveRows=true |
false |
不保留全局临时表的会话级 |
etl.source.onCommitPreserveRows=false |
4.9. etl.global.removeDoubleQuote
表示迁移转化过程SQL语句中元素(表、列、视图等)上的双引号是否移除,默认true。
参数(值) |
说明 |
示例 |
---|---|---|
true |
默认值,迁移转化过程SQL语句中元素上的双引号移除 |
etl.global.removeDoubleQuote=true |
false |
迁移转化过程SQL语句中元素上的双引号不移除 |
etl.global.removeDoubleQuote=false |
4.10. etl.global.plpgSql
表示存储过程的DDL语句的转换成Postgres和Oracle语法,默认值false。
参数(值) |
说明 |
示例 |
---|---|---|
true |
表示存储过程的迁移方向是Postgres |
etl.global.plpgSql=true |
false |
表示存储过程的迁移方向是Oracle |
etl.global.plpgSql=false |
4.11. etl.global.ignoreCase
对比时,是否忽略对象名的大小写,默认值true,忽略大小写。
参数(值) |
说明 |
示例 |
---|---|---|
true |
表示对比时,忽略大小写 |
etl.global.ignoreCase=true |
false |
表示对比时,不忽略大小写 |
etl.global.ignoreCase=false |
4.12. etl.global.ignoreCaseMixing
对比时,是否忽略大小写混合的对象名,默认false,不忽略。
参数(值) |
说明 |
示例 |
---|---|---|
true |
表示对比时,忽略大小写 |
etl.global.ignoreCaseMixing=true |
false |
表示对比时,不忽略大小写 |
etl.global.ignoreCaseMixing=false |
4.13. etl.global.syncTableDataOpenTruncate
迁移表数据时,是否使用truncate清空目标库对应表的数据。默认值false。
参数(值) |
说明 |
示例 |
---|---|---|
true |
迁移表数据时,使用truncate清空目标库对应表数据 |
etl.global.syncTableDataOpenTruncate=true |
false |
迁移表数据时,不清空目标库对应表数据 |
etl.global.syncTableDataOpenTruncate=false |
4.14. etl.global.compileOracleProcedure
迁移存储过程时时候,是否重新编译无效的存储过程。默认值false。
参数(值) |
说明 |
示例 |
---|---|---|
true |
重新编译源库无效的存储过程。 |
etl.global.compileOracleProcedure=true |
false |
不编译源库无效的存储过程。 |
etl.global.compileOracleProcedure=false |
4.15. etl.global.onlyTransferTempTables
是否只迁移临时表,默认值false。
参数(值) |
说明 |
示例 |
---|---|---|
true |
只迁移临时表 |
etl.global.onlyTransferTempTables=true |
false |
不只迁移临时表 |
etl.global.onlyTransferTempTables=false |
4.16. etl.global.compareAll
是否打印比对的所有内容,默认未true。
参数(值) |
说明 |
示例 |
---|---|---|
true |
打印比对的所有内容 |
etl.global.compareAll=true |
false |
表结构对比,只打印目标库的字符类型长度小的情况 |
etl.global.compareAll=false |
4.17. etl.global.excludeColumns
数据迁移时,指定排除某个表的某个列不进行数据迁移,可配置多个表的列,格式:;
分割多个表,每个表的列使用 []
加 ,
号分割。例子如下:
etl.global.excludeColumns=tab1[col1,col2,col3];tab2[col1,col2,col3]
4.18. etl.global.booleanColumns
需要进行bool类型和varchar类型转换的列,可配置多个表的列,格式: ;
分割多个表,每个表的列使用 []
加 ,
号分割。例子如下:
etl.global.booleanColumns=tab1[col1,col2,col3];tab2[col1,col2,col3]
4.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 |
4.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
4.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
4.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)
4.23. etl.global.customException
配置自定义异常名,多个异常名用逗号隔开,当函数中自定义异常名被配置后,会替换成pg的自定义异常语法。示例如下:
etl.global.customException=ERROROCCURRED,E_ERROROCCURRED
4.24. etl.global.errorSaveLightdbSchema
oracle迁移到lightdb时,指定迁移报错内容在目标库上的存储schema,会在比对报告打印报错内容,必须指明schema和table两个参数才生效。示例如下:
etl.global.errorSaveLightdbSchema=lt_test
4.25. etl.global.errorSaveLightdbTable
oracle迁移到lightdb时,指定迁移报错内容在目标库上的存储table,会在比对报告打印报错内容,必须指明schema和table两个参数才生效。示例如下:
etl.global.errorSaveLightdbTable=err_table
4.26. etl.global.batchCount
表示数据迁移时每一批次的迁移数量,默认值200000。示例如下:
etl.global.batchCount=50000
4.27. etl.global.concurrentThreadCount
配置数据迁移的线程数,默认是32。需要参考表数据的大小、内存的大小来控制线程数,详细内存和线程关系,参考第二章的内存举例。示例如下:
etl.global.concurrentThreadCount=8
4.28. etl.global.includeTableRegexp
表示只迁移符合要求的表、表数据。其中迁移的源数据库的表名是正则表达式,默认为空。示例如下:
etl.global.includeTableRegexp=^tablename1$
迁移多个表可配置
etl.global.includeTableRegexp=(^tablename1$)|(^tablename2$)|(^tablename3$)
4.29. etl.global.excludeTableRegexp
表示不会迁移符合要求的表,默认为空。
etl.global.includeTableRegexp=^tablename1$
排除多个表可配置
etl.global.includeTableRegexp=(^tablename1$)|(^tablename2$)|(^tablename3$)
4.30. etl.global.transferSchemas
表示需要迁移的源数据库的模式,可以多选,用英文逗号隔开,与目标库的模式是一一对应。
etl.global.transferSchemas=schema1,schema2
4.31. etl.global.targetSchemas
表示需要迁移的目标数据库的模式,可以多选,用英文逗号隔开,与源库的模式是一一对应。
etl.global.targetSchemas=schema1,schema2
4.32. etl.global.transferOnlyProcedures
表示仅需要迁移的数据库存储过程,可以多选,用英文逗号隔开。示例如下:
etl.global.transferOnlyProcedures=procedureName1,procedureName2
4.33. etl.global.keywords
表的列名是关键字如“by”,需要在这里添加,可以多选,用英文逗号隔开。示例如下:
etl.global.keywords=by,commit
4.34. etl.global.sqluldr2CmdPrefix
- 如果表的列有关键字,需要走sqluldr迁移数据。故需要配置sqluldr。
(需要安装sqluldr,可参考sqluldr安装 方法一 , 方法二 )。
基本格式为: 路径 user_name/password@ip:port/server_name。
第一个位置是sqludr2绝对路径。
第二个位置sqluldr的语法:基本格式:user_name/password@ip:port/server_name
use=部分是数据库连接信息,如果两边数据库的字符集不一致,则按照charset=utf8格式设置字符集。
示例:
etl.global.sqluldr2CmdPrefix=/home/lightdb/zxd/sqluldr2/sqluldr2_linux64_10204.bin user=system/oracle@10.1.199.1:5432/hs
4.35. 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
4.36. etl.source.jdbc.url
配置迁移的源数据库jdbc url,示例如下:
etl.source.jdbc.url=jdbc:oracle:thin:@111.168.251.160:1521/orcl
4.37. etl.source.jdbc.username
配置迁移的源数据库用户名.示例如下:
etl.source.jdbc.username=oracle
4.38. etl.source.jdbc.password
配置迁移的源数据库密码。示例如下:
etl.source.jdbc.password=oracle
4.39. etl.target.jdbc.url
配置迁移的目标数据库jdbc的url,示例是lightdb的jdbc的url配置,更多参数参考( lt_jdbc )。如下:
#pg模式
etl.target.jdbc.url=jdbc:postgresql://192.20.30.200:5436/etl
#lightdb-oracle模式
#lightdbSyntaxCompatibleType=oracle 表示兼容模式是oracle
#enforceUtf8 强制使用UTF-8编码会自动从字符串中删除空字符(“0”或0x00)
#更多配置参数参考ltjdbc官网
etl.target.jdbc.url=jdbc:postgresql://192.20.30.200:5436/etl?options=-c%20search_path=public,oracle,lt_catalog&lightdbSyntaxCompatibleType=oracle&reWriteBatchedInserts=true&enforceUtf8=true
4.40. etl.target.jdbc.username
配置迁移的目标数据库用户名,示例如下:
etl.target.jdbc.username=lightdb
4.41. etl.target.jdbc.password
配置迁移的目标数据库密码,示例如下:
etl.target.jdbc.password=lightdb