当前位置: 首页>数据库>正文

【kettle012】kettle访问FTP服务器文件并处理数据至PostgreSQL(已更新)

1.一直以来想写下基于kettle的系列文章,作为较火的数据ETL工具,也是日常项目开发中常用的一款工具,最近刚好挤时间梳理、总结下这块儿的知识体系。
2.熟悉、梳理、总结下FTP服务器相关知识体系
3.欢迎批评指正,跪谢一键三连!

  • kettle访问FTP服务器文件并处理数据至PostgreSQL文章目录索引如下所示:
  • 【实操视频,辅助实操学习,欢迎点赞、关注,跪谢一键三连!】【kettle012】kettle访问FTP服务器文件并处理数据至PostgreSQL文章目录索引如下所示
  • KETTLE9.0资源下载

1.环境搭建、配置

  • 1.0 实验环境信息
  • Windows 10
  • CentOS 7.1(虚拟机)
  • Docker version 26.0.2
  • Dbeaver
  • PostgreSQL 16.2, compiled by Visual C++ build 1937, 64-bit
  • Kettle 8.2–访问异常
  • Kettle 9.0–有效方案
  • 1.1 FTP服务器环境搭建参考博文: 【FTP】配置FTP服务器并访问测试(已更新)
  • 重要提示: 需 关闭防火墙 负责 ftp://192.168.48.220/ 访问失败
  • 1.2 CSV文件数据手动上传至FTP服务器,效果测试
  • 1.3 下载资源包,搭建kettle实战环境
  • kettle8.2资源包: pdi-ce-8.2.0.0-342.zip
  • kettle9.0资源包:kettle-pdi-ce-9.0.0.0-423.zip
  • 重要提示: kettle8.2版本在连接 PostgreSQL 16.2 一直提示Error connecting to database: (using class org.postgresql.Driver) 尝试连线已失败。,使用kettle9.0版本该问题不再复现。
  • dbeaver-driver-all-master资源包: dbeaver-driver-all-master
  • 下载解压即可使用,运行 Spoon.bat 效果

2.基于kettle下载FTP文件服务器数据

  • 注意: 采用 基于 Kettle 9.0 有效可用方案
  • 2.1 FTP 下载 配置信息及运行结果详情

3.基于kettle处理数据至PostgreSQL

  • 3.1 【kettle作业流程配置】版本驱动或kettle bug问题(解决了好久,尝试了很多次,替换了很多个驱动版本,均解决无效)
  • kettle版本: Kettle 8.2,查看到类似材料说驱动版本问题,更换了很多次,尝试多个驱动版本如下,但都不能成功链接
  • postgresql-42.2.25.jar
  • postgresql-9.1-901-1.jdbc4.jar
  • postgresql-42.3.9.jar
  • postgresql-42.7.2.jar
  • edb-jdbc16.jar
  • Kettle 8.2 链接异常详情示例如下(通过Java代码测试链接成功):
  • IDE + java 代码测试效果
import java.sql.DriverManager;
import java.sql.Connection;
import java.sql.SQLException;
import java.sql.ResultSet;
import java.sql.Statement;

public class PG {
    public static void main(String[] args) {
        System.out.println("PostgreSQL JDBC...");
        try {
            Class.forName("org.postgresql.Driver");
        } catch (ClassNotFoundException e) {
            System.out.println("could not find postgreSQL JDBC Driver");
            e.printStackTrace();
            return;
        }
        Connection connection = null;
        try {
            connection = DriverManager.getConnection(
                    "jdbc:postgresql://localhost:5432/postgres",
                    "postgres",
                    "postgres");
        } catch (SQLException e) {
            System.out.println("Connection Failed");
            e.printStackTrace();
            return;
        }

        if (connection != null) {
            System.out.println("connect db successful!");
        } else {
            System.out.println("Failed to make conn!");
        }
        try {
            Statement stmt = connection.createStatement();
            ResultSet rs = stmt.executeQuery("select * from youli_kettle_sy001.news_api_user");
            if (rs != null) {
                while (rs.next()) {
                    // 根据你的表结构,假设有两个字段:id和name
                    int userid = rs.getInt("userid");
                    String username = rs.getString("username");
                    int gender = rs.getInt("gender");
                    String ip = rs.getString("ip");
                    String headportrait = rs.getString("headportrait");
                    System.out.println("userid: " + userid + ", username: " + username + ", gender: " + gender + ", ip: " + ip + ", headportrait: " + headportrait);
                }
            } else {
                System.out.println("null");
            }
            rs.close();
            stmt.close();
            connection.close();
        } catch (Exception exp) {
            exp.printStackTrace();
        }
    }
}
  • 换用Kettle 9.0,方式【1】配置详情(提示:两种方式均可链接成功)参考如下图:
  • 方式【2】配置及连接测试
# 自定义连接 URL 配置信息
	jdbc:postgresql://localhost:5432/postgres?sslmode=disable
	
	# 自定义驱动类名称 配置信息
	org.postgresql.Driver
	
	# 用户名 / 密码,替换为自己的
	postgres / postgres

【kettle012】kettle访问FTP服务器文件并处理数据至PostgreSQL(已更新),【kettle012】kettle访问FTP服务器文件并处理数据至PostgreSQL(已更新)_etl,第1张

  • 3.2 【kettle转换】流程配置
  • 【CSV文件输入】配置信息
  • postgresql建表语句
-- 创建数据库
create schema youli_kettle_sy001 authorization postgres;

-- 创建数据表
create table youli_kettle_sy001.news_api_user (
	userid varchar(30) not null,
	username varchar(50) null,
	gender int4 null,
	ip varchar(30) null,
	"password" varchar(30) null,
	region varchar(50) null,
	headportrait varchar(512) null,
	constraint news_api_user_pkey primary key (userid)
);

-- 查询测试
select * from news_api_user
  • kettle【表输出】配置信息

4.PostgreSQL结果表效果测试

【kettle012】kettle访问FTP服务器文件并处理数据至PostgreSQL(已更新),【kettle012】kettle访问FTP服务器文件并处理数据至PostgreSQL(已更新)_数据处理_02,第2张

5.参考链接


  • 【FTP】配置FTP服务器并访问测试(已更新)
  • Kettle中文网
  • kettle几个常用的小场景案例
  • Powerrich Bridge错误的连接数据库


https://www.xamrdz.com/database/6eb1957455.html

相关文章: