最近有个业务数据变更的需求,要将1个已生成的500w记录写回到另一个表里面。
这里的需求比较简单,可以通过pt-archiver来做,也通过kettle之类工具来做。kettle的话比较重,可支持的数据整型功能也更强大。
我这里是用kettle来搞的(复习下kettle,弄个demo,指不定后面有更复杂的业数据需求要找DBA介入)
配置JDBC连接的时候,建议加上字符集设定等几个参数:
代码语言:javascript复制defaultFetchSize 1000
useCursorFetch true
characterEncoding utf8
characterSetResults utf8
characterSetResults false
配置job的kjb文件的时候,建议使用相对路径:
代码语言:javascript复制写法 ${Internal.Job.Filename.Directory}/xxxx.ktr
kettle自定义JVM内存大小:
vim spoon.sh 找到下面,修改下
代码语言:javascript复制if [ -z "$PENTAHO_DI_JAVA_OPTIONS" ]; then
PENTAHO_DI_JAVA_OPTIONS="-Xms2048m -Xmx2048m"
fi
job命令行下的启动:
cat start.sh 如下:
代码语言:javascript复制export JAVA_HOME=/usr/local/jdk1.8
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin
cd /opt/kettle/demo
/opt/kettle/data-integration/kitchen.sh -file /opt/kettle/demo/test.kjb >> ./run.log 2>&1