1、是因为这部署kettle的这台服务器上没有MySQL的客户端,所以根本无法访问到数据库,太疏忽了。。。
2、接下来换了一台装有MySQL客户端的服务器,进行部署。也是有问题,是由于我创建的资源库用户没有权限访问那台数据库(只开通了外网连接权限,未开通localhost权限)
---赋予权限(外网)
grant all on lisnew.* to ods_rep@"%" identified by 'ods_rep'
---赋予权限(内网/本地)
grant all privileges on . to ods_rep@localhost identified by 'ods_rep'
【注】:ods_rep用户为资源库用户,命令含义可在百度查询
linux 下,可以使用cli程序把csv文件导入到数据库。具体代码如下:
$ORACLE_HOME/bin/sqlplus -S username/password@instanceName > /dev/null 2>&1 <<!!#对sqlplus作一些设置,使之只输出我们需要的文本
set echo off
set pagesize 0
set verify off
set feedback off
set termout off
set linesize 3000
set trimspool on
#查询输出到临时文件
spool /tmp/some_tmp.csv
#select语句
select column1||','||column2||','||column3 ....
from some_table where condition
spool off
#这里可以添加多个查询,且每个查询可输出到不同的文件,如下面注释
#spool /tmp/some_tmp.csv
#select column1||','||column2||','||column3 ....
#from some_table where condition
#spool off
set markup HTML off
quit
!!
#计算记录总行数,如果是0则不发邮件
NUM=`cat /tmp/some_tmp.csv | wc -l`
if[ $NUM -gt 0 ]
then
#先写excel的每列的title
echo 'Title_Of_Column1, Title_Of_Column2, ....Title_Of_ColumnN' > /tmp/attachement.csv
#数据正文
cat /tmp/some_tmp.csv >> /tmp/attachement.csv
#发邮件
(
echo "From: user@somehost.com"
echo "To: user1@somehost.com"
echo "MIME-Version: 1.0"
echo "Content-Type: multipart/mixed"
echo ' boundary="A_Boundary_Name_You_Can_Change_It"'
echo "Subject: Subject"
echo ""
echo ""
#附件分隔符,上面的boundary前面加--
echo "--A_Boundary_Name_You_Can_Change_It"
echo 'Content-Transfer-Encoding: x-uuencode'
echo 'Content-Type: text/csv'
echo ' name="attachement.csv"'
echo 'Content-Disposition: attachment'
echo ' filename="attachement.csv"'
echo ""
uuencode /tmp/attachement.csv attachement.csv
echo "--A_Boundary_Name_You_Can_Change_It"
#附件结束
) | mailx -t
fi
#删除临时文件
rm -f /tmp/*.csv
exit 0
安装JDK环境:根据自己的linux系统选择相应的版本,比如我的centos7是x64的,所以我选择jdk-8u74-linux-x64.tar.gz下载下载下来以后,我们将其移到我们创建的一个目录中,存放tar包的目录为/usr/local/src/jdk,然后解压:
tar -zxf /usr/local/src/jdk/jdk-7u65-linux-x64.tar.gz
编辑 vi /etc/profile 文件
在文件后面添加:
export JAVA_HOME=/usr/local/src/jdk/jdk1.8.0_74
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:$CLASSPATH:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
执行 . /etc/profile
配置成功后,关闭终端,重新进入,输入java –version 如果出现版本号什么的,就证明jdk安装成功
1. 将data-integration文件夹直接拷贝到/usr/local/kettle文件夹下面
cd /usr/local/kettle/data-integration 进入该目录
为所有.sh文件赋予执行权限
chmod +x *.sh
然后在终端键入./kitchen.sh 如果出现帮助信息,说明kettle安装成功
./kitchen.sh -----运行job
./span.sh -----运行转换
1. 在kettle下建立data 文件夹,用来存放转换和job文件
建立ktllog 文件夹,用来存放日志文件
建立ktlsh 文件夹,用来存放脚本文件
1. 在ktlsh文件夹中新建执行job的文件,
新建文件命令: touch xxx.sh
并赋予文件执行权限
chmod +x xxx.sh
编辑xxx.sh文件
Vi xxx.sh
输入 :
#!/bin/sh
source /etc/profile 配置环境变量(使用crontab时候,由于crontab不识别系统的环境变量,所以需要我们这边再配置一遍)
ROOT_TOPDIR=/usr/local/kettle
Export ROOT_TOPDIR --设置kettle目录
$ROOT_TOPDIR/data-integration/kitchen.sh –file=需要执行的job的文件(绝对路径)
保存!
可在ktlsh目录下直接执行./xxx.sh 文件运行
1. 配置crontab 定期执行作业或者转换
基本格式 :
*****command
分 时 日 月 周 命令
第1列表示分钟1~59 每分钟用*或者 */1表示 第2列表示小时1~23(0表示0点) 第3列表示日期1~31 第4列表示月份1~12 第5列标识号星期0~6(0表示星期天) 第6列要运行的命令
在crontab中配置自动每天12点30分执行xxx.sh文件
编辑crontab : crontab –e
增加一行
30 12 * * * /usr/loca/kettle/ktlsh/xxx.sh
如果要输出日志可
30 12 * * * /usr/loca/kettle/ktlsh/xxx.sh >>/usr/local/kettle/ktllog/log01
如果ktllog下面不存在log01文件会自动创建
配置完后重启crontab服务:
Service crond restart
查看crontab服务
Service crond status
查看crontab中的内容
Crontab –1
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)