linux环境kettle连接不了数据库资源库

linux环境kettle连接不了数据库资源库,第1张

首先感谢楼上两位大神的回答,再说一下问题的错误原因:

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


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10827162.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-11
下一篇 2023-05-11

发表评论

登录后才能评论

评论列表(0条)

保存