MPPDB的demo示例

简介: 下载驱动:https://pan.baidu.com/s/1sV4XZbbmYtC0pAO6tewMTg功能:将mysql中的数据表结构,自动在MPPDB中按照MPPDB语法批量创建表。

下载驱动:https://pan.baidu.com/s/1sV4XZbbmYtC0pAO6tewMTg

功能:将mysql中的数据表结构,自动在MPPDB中按照MPPDB语法批量创建表。

package com.epoint.HadoopAPIDemo;


import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;

public class MPPTestCreateTable {
    private static String MYSQLUSERNAME = "root";
    private static String MYSQLPASSWORD = "Gepoint";
    private static String MYSQLDRIVER = "com.mysql.jdbc.Driver";
    private static String MYSQLURL = "jdbc:mysql://100.2.5.221:3307/dep_fr_db";
    private static String MYSQLDATABASE = "dep_fr_db";


    private static String MPPDRIVER = "com.MPP.jdbc.Driver";
    private static String MPPURL = "jdbc:MPP://100.2.5.1:5258/";
    private static String MPPUSERNAME = "mpp";
    private static String MPPPASSWORD = "h3c";

    Connection mysqlconn = null;
    Statement mysqlpstm = null;
    ResultSet mysqlrs = null;

    Connection mppconn = null;
    Statement mppstm = null;
    ResultSet mpprs = null;

    String sql1 = " ";
    String sql2 = " ";
    String sql3 = " ";
    String sql4 = " ";
    String sql5 = " ";
    String sql6 = " ";

    public static void main(String[] args) throws Exception {
        MPPTestCreateTable aidth = new MPPTestCreateTable();
        aidth.getMYSQLConnection();
        aidth.MYSQLReleaseResource();
        aidth.getMPPConnection();
        aidth.MPPReleaseResource();
        aidth.CreateMPPTable();
//      aidth.ImportDataToMPP();
        System.out.println("程序已经执行完毕!请去waterdrop验证结果吧!!");
    }

    public void CreateMPPTable() {
        mysqlconn = getMYSQLConnection();
        mppconn = getMPPConnection();
        try {
            mppstm = mppconn.createStatement();
            mysqlpstm = mysqlconn.createStatement();
            int i = 0;
                String sql = "SELECT table_schema\r\n" + 
                        "   ,table_name\r\n" + 
                        "   ,(\r\n" + 
                        "       CASE \r\n" + 
                        "           WHEN ORDINAL_POSITION = mincol\r\n" + 
                        "               AND ORDINAL_POSITION < maxcol\r\n" + 
                        "               THEN CONCAT (\"create  table \"\r\n" + 
                        "                       ,table_schema\r\n" + 
                        "                       ,\".\"\r\n" + 
                        "                       ,table_name\r\n" + 
                        "                       ,\"(`\"\r\n" + 
                        "                       ,column_name\r\n" + 
                        "                       ,\"` \"\r\n" + 
                        "                       ,COLUMN_TYPE\r\n" + 
                        "                       ,\",\"\r\n" + 
                        "                       )\r\n" + 
                        "           WHEN ORDINAL_POSITION = mincol\r\n" + 
                        "               AND ORDINAL_POSITION = maxcol\r\n" + 
                        "               THEN CONCAT (\"create  table \"\r\n" + 
                        "                       ,table_schema\r\n" + 
                        "                       ,\".\"\r\n" + 
                        "                       ,table_name\r\n" + 
                        "                       ,\"(`\"\r\n" + 
                        "                       ,column_name\r\n" + 
                        "                       ,\"` \"\r\n" + 
                        "                       ,COLUMN_TYPE\r\n" + 
                        "                       ,\");\"\r\n" + 
                        "                       )\r\n" + 
                        "           WHEN ORDINAL_POSITION > mincol\r\n" + 
                        "               AND ORDINAL_POSITION < maxcol\r\n" + 
                        "               THEN CONCAT (\r\n" + 
                        "                       \"`\"\r\n" + 
                        "                       ,column_name\r\n" + 
                        "                       ,\"` \"\r\n" + 
                        "                       ,COLUMN_TYPE\r\n" + 
                        "                       ,\",\"\r\n" + 
                        "                       )\r\n" + 
                        "           WHEN ORDINAL_POSITION = maxcol\r\n" + 
                        "               THEN CONCAT (\r\n" + 
                        "                       \"`\"\r\n" + 
                        "                       ,column_name\r\n" + 
                        "                       ,\"` \"\r\n" + 
                        "                       ,COLUMN_TYPE\r\n" + 
                        "                       ,\");\"\r\n" + 
                        "                       )\r\n" + 
                        "           END\r\n" + 
                        "       ) AS statement\r\n" + 
                        "   ,ORDINAL_POSITION\r\n" + 
                        "   ,maxcol\r\n" + 
                        "   ,mincol\r\n" + 
                        "FROM (\r\n" + 
                        "   SELECT b.table_schema,b.table_name,b.ORDINAL_POSITION,b.column_name,\r\n" + 
                        "   (case\r\n" + 
                        "   when column_type = 'timestamp' then 'datetime'\r\n" + 
                        "   when column_type = 'bit(1)' then 'int(1)'\r\n" + 
                        "   else\r\n" + 
                        "       column_type\r\n" + 
                        "   end ) AS column_type\r\n" + 
                        "       ,a.maxcol\r\n" + 
                        "       ,a.mincol\r\n" + 
                        "   FROM (\r\n" + 
                        "       SELECT table_schema\r\n" + 
                        "           ,table_name\r\n" + 
                        "           ,max(ORDINAL_POSITION) maxcol\r\n" + 
                        "           ,min(ORDINAL_POSITION) mincol\r\n" + 
                        "       FROM information_schema.COLUMNS\r\n" + 
                        "       GROUP BY table_schema\r\n" + 
                        "           ,table_name\r\n" + 
                        "       ) a\r\n" + 
                        "   JOIN (\r\n" + 
                        "       SELECT table_schema\r\n" + 
                        "           ,table_name\r\n" + 
                        "           ,ORDINAL_POSITION\r\n" + 
                        "           ,column_name\r\n" + 
                        "           ,COLUMN_TYPE\r\n" + 
                        "       FROM information_schema.COLUMNS\r\n" + 
                        "       ORDER BY table_schema\r\n" + 
                        "           ,table_name\r\n" + 
                        "           ,ORDINAL_POSITION ASC\r\n" + 
                        "       ) b ON a.table_schema = b.table_schema\r\n" + 
                        "       AND a.table_name = b.table_name\r\n" + 
                        "   ) c\r\n" + 
                        "WHERE table_schema = '"+MYSQLDATABASE+"'";
                mysqlrs = mysqlpstm.executeQuery(sql);
                while (mysqlrs.next()) {
                    sql1 = mysqlrs.getString(3);
                    sql2 = sql2 + sql1;
                }

            sql3 = "create database IF NOT EXISTS " + MYSQLDATABASE;
            mppstm.execute(sql3);
            System.out.println("-------------------建mpp表,表结构的语句为:" + sql2);
            String[] sqls=sql2.split(";");
            for (String m : sqls) {
                mppstm.execute(m);
            }
            System.out.println("----------------------------------------建mpp表已结束!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
            mppstm.close();
            mysqlpstm.close();
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            MYSQLReleaseResource();
            MPPReleaseResource();
        }
    }

    public void ImportDataToMPP() {
        mysqlconn = getMYSQLConnection();
        mppconn = getMPPConnection();
        String sql = "select table_name from user_tables where num_rows > 0 order by table_name asc";
        int i = 0;
        try {
            mysqlpstm = mysqlconn.createStatement();
            mysqlrs = mysqlpstm.executeQuery(sql);
            mppstm = mppconn.createStatement();
            while (mysqlrs.next()) {
                i = i + 1;
                String table_name = mysqlrs.getString("table_name").replaceAll("\\$", "");
                String sql7 = "insert into " + MYSQLDATABASE + "." + table_name + " select * from " + MYSQLDATABASE
                        + "_ex." + table_name;
                System.out.println("现在插入第"+i+"个表:"+sql7);
                mppstm.execute(sql7);
            }
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            MYSQLReleaseResource();
            MPPReleaseResource();
        }
    }

    public Connection getMYSQLConnection() {
        try {
            Class.forName(MYSQLDRIVER);
            mysqlconn = DriverManager.getConnection(MYSQLURL, MYSQLUSERNAME, MYSQLPASSWORD);
        } catch (ClassNotFoundException e) {
            throw new RuntimeException("class not find !", e);
        } catch (SQLException e) {
            throw new RuntimeException("get connection error!", e);
        }

        return mysqlconn;
    }

    public void MYSQLReleaseResource() {
        if (mysqlrs != null) {
            try {
                mysqlrs.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if (mysqlpstm != null) {
            try {
                mysqlpstm.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if (mysqlconn != null) {
            try {
                mysqlconn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }

    public Connection getMPPConnection() {
        try {
            Class.forName(MPPDRIVER);
            mppconn = DriverManager.getConnection(MPPURL, MPPUSERNAME, MPPPASSWORD);
        } catch (ClassNotFoundException e) {
            throw new RuntimeException("class not find !", e);
        } catch (SQLException e) {
            throw new RuntimeException("get connection error!", e);
        }
        return mppconn;
    }

    public void MPPReleaseResource() {
        if (mpprs != null) {
            try {
                mpprs.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if (mppstm != null) {
            try {
                mppstm.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if (mppconn != null) {
            try {
                mppconn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
}
相关实践学习
AnalyticDB PostgreSQL 企业智能数据中台:一站式管理数据服务资产
企业在数据仓库之上可构建丰富的数据服务用以支持数据应用及业务场景;ADB PG推出全新企业智能数据平台,用以帮助用户一站式的管理企业数据服务资产,包括创建, 管理,探索, 监控等; 助力企业在现有平台之上快速构建起数据服务资产体系
目录
相关文章
|
7月前
|
人工智能 Java 程序员
JManus - 面向 Java 开发者的开源通用智能体
JManus 是一个以 Java 为核心、完全开源的 OpenManus 实现,隶属于 Spring AI Alibaba 项目。它旨在让 Java 程序员更便捷地使用 AI 技术,支持多 Agent 框架、网页配置 Agent、MCP 协议和 PLAN-ACT 模式。项目在 GitHub 上已获近 3k star,可集成多个大模型如 Claude 3.5 和 Qwen3。开发者可通过 IDE 或 Maven 快速运行项目,体验智能问答与工具调用功能。欢迎参与开源共建,推动通用 AI Agent 框架发展。
10542 65
|
10月前
|
人工智能 API
新用户100万token免费额度!阿里云上线DeepSeek-R1满血版
阿里云推出DeepSeek-R1满血版,新用户可享100万免费Token额度。平台支持多种模型,包括671B参数的DeepSeek-R1和通义千问。结合开源工具Chatbox,用户能轻松对接API,体验高性能AI服务。访问[阿里云解决方案](https://www.aliyun.com/solution/tech-solution/deepseek-r1-for-platforms?utm_content=g_1000401616)了解更多详情并快速上手。
5687 36
|
存储 安全 对象存储
用Typora,PicGo和OSS实现自动上传图片
以前写博客要发布到好些个平台,我是将图片一张张上传到每个平台,后来发现是真的麻烦,上传图片花的时间太多,极大的降低了我写文章的积极性。后来改进为使用oss,把博客的图片都上传到oss上面。然后使用oss返回的图片url,这样我的文章里面的图片只上传了一次,最后把整篇文章的mardown复制到各个平台上,平台一般都会把markdown的文章中的img标签的图片上传到他们自己的服务器,然后把图片打上平台的水印,然后把原图片链接替换掉。
1172 1
用Typora,PicGo和OSS实现自动上传图片
|
7天前
|
云安全 监控 安全
|
12天前
|
机器学习/深度学习 人工智能 自然语言处理
Z-Image:冲击体验上限的下一代图像生成模型
通义实验室推出全新文生图模型Z-Image,以6B参数实现“快、稳、轻、准”突破。Turbo版本仅需8步亚秒级生成,支持16GB显存设备,中英双语理解与文字渲染尤为出色,真实感和美学表现媲美国际顶尖模型,被誉为“最值得关注的开源生图模型之一”。
1351 8
|
6天前
|
人工智能 安全 前端开发
AgentScope Java v1.0 发布,让 Java 开发者轻松构建企业级 Agentic 应用
AgentScope 重磅发布 Java 版本,拥抱企业开发主流技术栈。
427 10