天天看点

data-loader使用

date-loader的使用

1、data-loader使用简介

  • data-loader 是一个简易的命令行工具, 连接源数据库与目标数据库,可在 Windows 与 Linux 下运行,使用前需要安装 Java 运行环境,并设置环境变量 JAVA_HOME。
  • date-loader不需要安装,直接解压就可以使用,一台机子上可以使用多个data-loader,可以并行执行
  • data-loader支持全量和增量导入两种方式

2、使用配置

  • 打开 conf/data-loader.properties文件
# 源数据库JDBC驱动,根据数据库类型指定相应的驱动
source.jdbc-driver:com.mysql.jdbc.Driver
# 源数据库JDBC连接URL,参考以下示例进行配置,主要配置数据库的主机地址,端口,数据库等参数。另外,useCursorFetch=true&defaultFetchSize=5000表示采用流式方式读取数据,为避免工具占用过大内存,通常需要配置
source.jdbc-url:jdbc:mysql://SourceCDB:4199/CDB?useCursorFetch=true&defaultFetchSize=5000
# 源数据库用户名,请确保该用户名有相应表的读权限
source.user:test
# 源数据库密码
source.password:abcd1234
# 源数据库抽取数据的SQL语句,支持动态参数的配置(使用?表示动态参数),参数由在run.sh脚本运行时传入
source.sql:SELECT * FROM FlinkRawMetrics WHERE id>=? AND id<?
# 如果source.sql中使用了动态参数,需要配置参数类型,有以下类型可用
# time - 时间类型,number - 数字类型,string – 字符串类型(默认)
source.sql.args-type:time

# 目标数据库JDBC驱动,导入目标数据库请设置为org.postgresql.Driver
target.jdbc-driver:org.postgresql.Driver
# 目标数据库JDBC连接URL,参考以下示例进行配置,主要配置数据库的主机地址,端口,数据库等参数。reWriteBatchedInserts=true表示启动批量导入,可提供导入效率,通常情况下需要设置
target.jdbc-url:jdbc:postgresql://DevPG:50010/postgres?reWriteBatchedInserts=true
# 目标数据库用户名,请确保该用户名有相应表的写权限
target.user:root
# 目标数据库密码
target.password:abcd1234
# 目标数据库中需要导入数据的表
target.table:FlinkRawMetrics
# 运行导入前是否需要清空目标表,通常在导入全量数据时需要设置为true
target.truncate-before-insert:true
# 运行导入前是否需要删除该阶段的部分数据,动态参数的使用方式与source.sql中的一致,通常在增量导入时设置,以确保重复运行该时间段的增量作业能够得到一致的结果
target.clear-sql-before-insert:DELETE FROM FlinkRawMetrics WHERE id>=? AND id<?
# 与source.sql.args-type用法相同
target.clear-sql-before-insert.args-type:true
# 批量导入的数据条数
target.batch-size:5000
           

3、全量导入数据

  • 全量导入时data-loader.properties
  • 全量导入用于离线一次性将数据源的数据导入到目标数据库中,仅运行一次。
source.jdbc-driver:com.mysql.jdbc.Driver
source.jdbc-url:jdbc:mysql://SourceCDB:4199/CDB?useCursorFetch=true&defaultFetchSize=5000
source.user:test
source.password:abcd1234
source.sql:SELECT * FROM EndpointAccessLog   
target.jdbc-driver:org.postgresql.Driver
target.jdbc-url:jdbc:postgresql://TargetGP:13634/postgres?reWriteBatchedInserts=true
target.user:gptestuser
target.password:gptestuser
target.table: EndpointAccessLog
target.truncate-before-insert:true
target.batch-size:5000
           
  • 启动命令
JAVA_HOME="D://JDK" ./run.sh 
           

4、增量导入

  • 增量导入用于将截至上次作业运行后新增的数据导入目标数据库,相对于全量导入而言,其触发方式可以设定为手动触发,但通常情况下设置为自动触发(如每5分钟、每小时、每天触发一次),并发布到生产环境定期运行。
  • 配置文件
source.jdbc-driver:com.mysql.jdbc.Driver
source.jdbc-url:jdbc:mysql://SourceCDB:4199/CDB?useCursorFetch=true&defaultFetchSize=5000
source.user:test
source.password:abcd1234
source.sql:SELECT * FROM EndpointAccessLog WHERE time_>=? AND time<?
source.sql.args-type:time
target.jdbc-driver:org.postgresql.Driver
target.jdbc-url:jdbc:postgresql://TargetGP:13634/postgres?reWriteBatchedInserts=true
target.user:gptestuser
target.password:gptestuser
target.table: EndpointAccessLog
target.clear-sql-before-insert:DELETE FROM EndpointAccessLog WHERE time_>=? AND time <?
target.clear-sql-before-insert.args-type:time
target.batch-size:5000
           
  • 启动命令
  • 参考:https://cloud.tencent.com/document/product/878/20069

继续阅读