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