
kettle数据导出到另一个数据库,不需要先建表结构,导出方法为:
1、打开SQL Database Studio。
2、点击展开数据库连接和数据库。
3、右击要导出数据的表,然后选择export wizard。
4、在choose source中选择database,然后点击next。
5、选择目标为database,然后点击next。
6、此时显示执行结果。
7、打开目标库,可以看到最终导出数据。
前言
近几天组内交给我一个任务,就是研究kettle的restful接口的调用。可是之前学习和接触的大部分都是数仓、BI以及一部分简单程序、脚本的编写,所以对restful接口不是很了解(但只是用工具调用的话,不需要太深的了解,只需要知道这是一种可以调用的API接口,实现某种功能就行了),所以在网上查找了很多资料,但其实对于调用来说,只需要知道在我们在调用这个接口时,需要哪些参数,应该怎样传入就可以了。感觉上好像很简单,但其实里面有很多坑,接下来我们就开始吧
正文
1、首先,我们要知道我们需要调用的接口的URI,简单理解就是你要调用的资源的地址,就像门派号一样,用到什么命令,传递什么参数。一般而言,需要让你进行调用,都会把这部分内容列出来,比如:
在这个API中,可以看到具体的信息,①是 *** 作行为,②是传递的body,③是请求头,在此就不多说了,该部分内容大家可以自行查阅资料,对这些内容我可能比大家还不清楚。知道我要调用的API之后,就可以通过kettle设计转换流程了。
一、生成记录
因为只是一个测试,所以我直接通过生成记录组件生成了我所需要的内容,ps:这里不仅仅可以配置单条记录,其实多条同样请求的记录同样会分别请求。
url是将要post的资源,post后得到关于token的response,然后再利用token进行其余的请求。
body是post的函数体,post时,有的需要带body才能通过。
url2是真正要进行调用的API,都在生成记录里预生成了。
二、REST Client配置
三、JSON Input
利用JSON Input接收由REST Client获取的结果,只保留token的值。此处JSON路径如何设置不多赘述,请读者自行查阅JSON路径的配置。
对于JSON Input 3中获取Cookie是为了调用真正的API做准备。如果没有带Cookie,后续的调用就无法确定是否进行了登录。在一个网页中,我们先进行登录,然后继续后续 *** 作,后续每次 *** 作都不需要再次登录,是因为我们将服务器传给我们的session存入了客户端/浏览器的cookie中,每次我们做请求,都会带上cookie,就不需要重复登录了。但是此处如果不获取cookie,因为是分离开的,所以后一步就会出现会话无效的错误。如下图所示:
四、记录集连接
因为cookie和token在不同的表中,所以需要将两张表join起来,join的 *** 作大家应该都很熟悉了。如果不清楚,后续可以留言我给大家进行补充。最后留下我们需要的几个参数,URL2、token、cookie
五、调用API
以上就是全部内容,如果有什么疑问或者有什么疏漏,欢迎大家指正。
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_tmpcsv
#select语句
select column1||','||column2||','||column3
from some_table where condition
spool off
#这里可以添加多个查询,且每个查询可输出到不同的文件,如下面注释
#spool /tmp/some_tmpcsv
#select column1||','||column2||','||column3
#from some_table where condition
#spool off
set markup HTML off
quit
!!
#计算记录总行数,如果是0则不发邮件
NUM=`cat /tmp/some_tmpcsv | wc -l`
if[ $NUM -gt 0 ]
then
#先写excel的每列的title
echo 'Title_Of_Column1, Title_Of_Column2, Title_Of_ColumnN' > /tmp/attachementcsv
#数据正文
cat /tmp/some_tmpcsv >> /tmp/attachementcsv
#发邮件
(
echo "From: user@somehostcom"
echo "To: user1@somehostcom"
echo "MIME-Version: 10"
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="attachementcsv"'
echo 'Content-Disposition: attachment;'
echo ' filename="attachementcsv"'
echo ""
uuencode /tmp/attachementcsv attachementcsv
echo "--A_Boundary_Name_You_Can_Change_It"
#附件结束
) | mailx -t
fi
#删除临时文件
rm -f /tmp/csv
exit 0
在转换和作业中都有这个控件,叫写日志
看名字就知道,它是用来写日志的,平时用来调试或者记日志都可以使用,我一般用来看变量,或者一些内容输出。
日志控件,只有几个功能
可以配置日志级别、写日志、获取上游的字段
比如我们想看看上游到底输出的是什么内容,我们就可以输出看看
执行的时候,就会打印出上游的输出内容
这里不适用太多内容,简单输出几行就行了
接上面的例子,我们说,简单输出几行就行了,刚才我是直接在上游的SQL中加了限制,只返回3条记录,如果不控制的话,还可以在日志控件中进行设置
勾选下图的参数,就可以进行限制了
这个日志级别有点儿奇怪,感觉不能理解他的实际意义
它又很多个选项,按照常理来说,勾选那个“行级别日志”,会显示最相信的日志,但是,并没有什么用,或者是我理解错了,用的不对。
选了以后,连基本的输出内容都没有了,是不是很奇怪,
或者我理解的不太对
还有这个错误日志,勾选后,会把输出内容标红,即把日志控件输出的内容设置为错误信息,这个到可以理解,
使用日志控件,还可以输出变量信息,一般有这空标识的都是可以写变量的
我是测试下变量
执行后,就会输出变量的值
顺带说一下作业在执行的时候,也有日志级别,这个是可以控制的
如果选择行级别,的确会输出很多内容来,大家可以尝试下。
以上就是关于kettle数据导出到另一个数据库,必须先建表结构吗全部的内容,包括:kettle数据导出到另一个数据库,必须先建表结构吗、关于kettle的REST Client组件带cookie(session)的使用、kettle抽取linux下csv文件到Windows下数据库等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)