问题:使用kettle进行数据迁移时,Spoon.bat死活启动不起来,尝试各种办法。
运行环境:windows7 64位,jdk1.8及以上,且环境变量配置ok。
检验:cmd->java -version,可以查看。环境变量配置网上一堆。
解决方法一:(最常见)
根目录下找到Spoon.bat文件,用编辑器打开,找到下面代码
PENTAHO_DI_JAVA_OPTIONS="-Xms1024m" "-Xmx2048m" "-XX:MaxPermSize=256m"
改成:PENTAHO_DI_JAVA_OPTIONS="-Xms512m" "-Xmx512m" "-XX:MaxPermSize=256m"
一般spoon.bat就能起来了。
解释:
-Xms:设置JVM初始内存
-Xmx:设置JVM最大可用内存
-XX:MaxPermSize:设置JVM最大允许分配内存,按需分配
总之这几个值越大,kettle处理数据的效率越高,但是如果电脑硬件实在不行,还是需要综合考虑。一般 -Xmx必须小于等于系统内存的1/4,其他两个选项不大于-Xmx
注意 当系统内存为4G时-Xmx不能大于1G,当系统内存为8G或更大时,java版本必须是64位的才能识别出来,此时-Xmx可以为2G或更高。
宣告方案一失败!!!!!!!!!!!!!!!!!!!!!开始头疼
解决方案二:
在解决方案一情况下还是启动不起来。启动spoon.bat后,页面一直卡在下面这种状态不动(因为已经修复好,下图是网上借的,只是jdk版本不一致,能突出问题就好)
各种怀疑:软件版本问题?内存溢出问题?jdk问题?……,结果都不是!!!
各种动作:卸载重装各种版本jdk、kettle,没用!!!!
最后发现一个帖子说是因为cmd运行命令使用的是utf-8的,而kettle需要使用gbk。
开始尝试:
cmd输入:
chcp 936 (暂时性的修改)
再进入kettle目录启动spoon.bat
成功!!!
永久修改cmd命令为gbk方法:
进入cmd后,输入"regedit"打开注册表。找到HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processor
然后“右键-新建”,选择“字符串值”,“名称”列填写“autorun”, 数值数据填写“chcp 936”(注意:中间有一个空格哦!)
这样我们就自动把编码格式设置为简体中文GBK了。
总结: 最后启动成功