需求描述:
客户端有一个程序定时(15分钟间隔)的采集外网数据,不过需要将该数据保存到线上数据库的表中。但是由于客户端程序在本地,无法直接访问线上数据库。需要解决将该数据,写入到线上数据库的问题。
csv的格式如下:
1 1 1h
2 2 2h
....底下省略
表的结构跟csv的字段一样的。
id hour_id hour_desc
1 1 1h
2 2 2h
方案:
1,本地的客户端程序,将采集到的外网数据先存在本地的tsa_dim_hour表中。
2,然后再本地起一个定时任务,将本地tsa_dim_hour表的数据生成csv文件。然后将该文件上传到ftp服务器。
3,在线上由kettle定时的从ftp上取该文件,将从ftp下的文件下载下来
4,然后将csv的数据更新到表中。因为csv的数据,由应用每隔15分钟向其增量插入数据。所以我拿到整个csv文件时,需要采用insert-update的方式。
步骤如下:
1,客户端将采集到的外网数据插入本地表的步骤省略。
2,本地将相关表的数据导出成csv格式。
在D盘目录下有两个文件:
文件dumpCallcenterData.bat内容如下:
@cd d:/
del test.csv
echo "删除数据文件"
mysql -uroot -proot -D tsa < test.sql
文件test.sql内容如下:
use tsa;
select * from tsa_dim_hour
into outfile 'd:/test.csv'
fields terminated by ',' optionally enclosed by '"' escaped by '"'
lines terminated by '\r\n';
在本地起一个windows定时任务,每隔15分钟就将该表的数据导出成test.csv的文件。并将其上传到ftp服务器上。
3,将csv的文本数据同步到表中,我采用的是kettle的方案。
这个是相关的job,到时候上线的话,会设置间隔执行的时间。
图一:
以下为Get a file with FTPS的内容,这里需要注意的是remote directory可以不指定,不然会报Return Value: 550 Description: Failed to change directory. 的错误。因为我的ftp账号没有相关权限吧。
图二:
图三:图一中的transformation
这里需要注意的是,由于csv的数据没有表头,所以需要考虑如何将csv的列数据,与表中的字段一一对应上。一般可以利用获取字段,在我们的这种情况下,就会取得csv中的第一行的数据作为字段名称。所以这里就手动输入相关名称就可以了。
由于excel中的date_id,starttime,endtime为date,datetime,datetime类型,需要在后面的format上指定转换格式。因此分别指定如下:yyyy-MM-dd,yyyy-MM-dd HH:mi:ss,yyyy-MM-dd HH:mi:ss,按照此种方案,发现date_id会报错,错误如下:
Error in step, asking everyone to stop because of:
Date<binary-string> : Unable to compare with value [Date]
date_id String : couldn't convert string [2011/07/03 00:00:00.000] to a date using format [yyyy-MM-dd]
Unparseable date: "2011/07/03 00:00:00.000"
解决方案为:
Since you enabled the "lazy conversion" option in the "CSV Input" step, the data is only convert when needed. In this case, in the Dimension step.
Uncheck the "lazy conversion" option to see the error happen in the "CSV Input" step.
图四:insert-update
- 大小: 10 KB
- 大小: 51.8 KB
- 大小: 5.6 KB
- 大小: 59.2 KB
- 大小: 65.1 KB
分享到:
相关推荐
内容概要:ETL之kettle包含26张PPT,kettle安装、使用、如何连接等,使用PDI9.2演示、什么是ETL、什么是Kettle、kettle安装、kettle目录结构、转换和作业、kettle操作、数据库连接、注意事项。 适合人群:具备一定...
Kettle课程之统计控件
网上看了很多的kettle通过将表名设置成变量,然后进行多表批量同步的帖子,发现多多少少都会有问题。而此类功能简单的问题对于新手而言需要花很多的时间去琢磨,本人作为新手也琢磨很久,最后经大神们指点验证,将...
我自己编写的KETTLE6.1与KETTLE7.1版本之间的差距比较
《详解kettle之User Defined Java Class步骤》示例代码,是最详细的udjc步骤说明文档,有示例理解更容易,更全面。
这个kettle 的插件,它可以从一个或多个 PDF 文件中抽取文本内容,抽取后的文本一页作为一行记录,便于后续处理,如写入数据库等等。 帮助手册 http://www.xgndata.com/resources/kettle/PFR_UserGuide_zh_CN.pdf ...
本地简单kettle抽MySQL数据到ES中 案例.zip本地简单kettle抽MySQL数据到ES中 案例.zip 本地简单kettle抽MySQL数据到ES中 案例.zip本地简单kettle抽MySQL数据到ES中 案例.zip 本地简单kettle抽MySQL数据到ES中 案例....
kettle中文文档之output.pdf Kettle例子.pdf Kettle关于平面数据的导入.pdf Kettle初探.pdf Kettle命令行使用说明.pdf Kettle培训.ppt KETTLE基本知识培训.pptx kettle实现循环.pdf kettle常见问题FAQ.pdf ...
kettle7.1下载资源
二、开源ETL工具kettle系列之常见问题 三、开源ETL工具kettle系列之在应用程序中集成 四、开源ETL工具kettle系列之增量更新设计 五、开源ETL工具kettle系列之动态转换 六、开源ETL工具kettle系列之建立缓慢增长...
适配了达梦数据库的kettle核心代码。
定时设置,操作界面与kettle中的开始控件界面一致,这个可能是最优用的功能之一。作业的运行与停止,核心功能就不说了。实时查看作业运行日志,最大显示行数可以配置,这个功能看起来不起眼,实际应该是很有用的。...
kettle设置循环变量,控制循环作业;kettle设置循环变量,控制循环作业.
20210511_kettle抽取mysql增量到ES中.zip20210511_kettle抽取mysql增量到ES中.zip20210511_kettle抽取mysql增量到ES中.zip20210511_kettle抽取mysql增量到ES中.zip20210511_kettle抽取mysql增量到ES中.zip20210511_...
Kettle课程之映射控件
kettle - JOB循环 , 用于kettle失败后重试 ! 具体内容请下载查看!这里不多做解析 ! kettle - JOB循环 , 用于kettle失败后重试 ! 具体内容请下载查看!这里不多做解析 !
kettle相关jar包,kettle相关jar包,kettle相关jar包kettle相关jar包kettle相关jar包kettle相关jar包kettle相关jar包kettle相关jar包
kettle使用事务的转换
kettle-core-7.1.0.0-12.jar kettle-dbdialog-7.1.0.0-12.jar kettle-engine-7.1.0.0-12.jar pentaho-metadata-7.1.0.0-12.jar
《示例学习kettle之Excel Writer步骤》博客文章示例代码,很好的Excel Writer步骤学习资料。