JDBC连接Greenplum数据库,封装了增删改查
要启动好gp服务,再尝试连接
192.168.94.135是主节点(master)的ip
驱动Jar包在官网获取
嫌麻烦,可以直接用我在网盘分享的Jar包,版本较老
链接:https://pan.baidu.com/s/1gVsxupUNUPXuewYlXHmgyw
提取码:bq1c
package com.advance.JDBC; import java.sql.*;
import java.util.*; /**
* @Auther: 谷天乐
* @Date: 2018/11/14 16:47
* @Description:
* 通过JDBC连接Greenplum
*/
public class Connect_Greenplum {
//表信息
static class TbInfo
{
//分布键
String id;
//日期
String date;
//价格
String amt; public String getId() {
return id;
} public void setId(String id) {
this.id = id;
} public String getDate() {
return date;
} public void setDate(String date) {
this.date = date;
} public String getAmt() {
return amt;
} public void setAmt(String amt) {
this.amt = amt;
}
} //表结构
static class TbStructure{
//appendonly属性
boolean appendonly = true;
//压缩类型
String compresstype = "zlib";
//压缩级别
int compresslevel = ;
//表的列和类型,用逗号分隔
String columnInfo;
//表名称
String tbName;
//分布键
String distributedKey; public String getCompresstype() {
return compresstype;
} public void setCompresstype(String compresstype) {
this.compresstype = compresstype;
} public boolean isAppendonly() {
return appendonly;
} public void setAppendonly(boolean appendonly) {
this.appendonly = appendonly;
} public int getCompresslevel() {
return compresslevel;
} public void setCompresslevel(int compresslevel) {
this.compresslevel = compresslevel;
} public String getColumnInfo() {
return columnInfo;
} public void setColumnInfo(String columnInfo) {
this.columnInfo = columnInfo;
} public String getTbName() {
return tbName;
} public void setTbName(String tbName) {
this.tbName = tbName;
} public String getDistributedKey() {
return distributedKey;
} public void setDistributedKey(String distributedKey) {
this.distributedKey = distributedKey;
}
} //三大核心接口
private static Connection conn = null;
private static PreparedStatement pstmt = null;
private static ResultSet rs = null; //连接数据库
public static Connection connectGreenplum() throws ClassNotFoundException, SQLException {
// URL
String url = "jdbc:pivotal:greenplum://192.168.94.135:5432;DatabaseName=testdw";
// 数据库用户名
String username = "gpadmin";
// 数据库密码
String password = "gpadmin";
// 加载驱动
Class.forName("com.pivotal.jdbc.GreenplumDriver");
// 获取连接
conn = DriverManager.getConnection(url, username, password);
return conn;
} //关闭数据库连接
public static void closeConnection(){
if(rs!=null){
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(pstmt!=null){
try {
pstmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(conn!=null){
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
//查询方法
public static ResultSet query(String sql) throws SQLException, ClassNotFoundException {
Connection conn = connectGreenplum();
pstmt = conn.prepareStatement(sql);
rs = pstmt.executeQuery();
return rs;
} //通用增删改
public static void update(String sql,Object []values) throws SQLException, ClassNotFoundException {
//获取数据库链接
conn=connectGreenplum();
try {
//预编译
pstmt=conn.prepareStatement(sql);
//获取ParameterMetaData()对象
ParameterMetaData pmd=pstmt.getParameterMetaData();
//获取参数个数
int number=pmd.getParameterCount();
//循环设置参数值
for (int i = ; i <=number; i++) {
pstmt.setObject(i, values[i-]);
}
pstmt.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}finally{
closeConnection();
}
} //新增方法
public static Integer insert(String sql,TbInfo tbInfo) throws SQLException, ClassNotFoundException {
Connection conn = connectGreenplum();
pstmt = conn.prepareStatement(sql);
pstmt.setString(,tbInfo.getId());
pstmt.setString(,tbInfo.getDate());
pstmt.setString(,tbInfo.getAmt());
Integer rs = pstmt.executeUpdate();
return rs;
} //删除方法
public static Integer delete(String sql,TbInfo tbInfo) throws SQLException, ClassNotFoundException {
conn = connectGreenplum();
pstmt = conn.prepareStatement(sql);
pstmt.setString(,tbInfo.getId());
Integer rs = pstmt.executeUpdate();
return rs;
} //修改方法
public static Integer update(String sql,TbInfo tbInfo) throws SQLException, ClassNotFoundException {
conn = connectGreenplum();
pstmt = conn.prepareStatement(sql);
pstmt.setString(,tbInfo.getAmt());
pstmt.setString(,tbInfo.getId());
Integer rs = pstmt.executeUpdate();
return rs;
} //输出
public static void output(ResultSet rs) throws SQLException {
while(rs.next())
{
System.out.println(
"id:"+rs.getString("id")+
" 日期:"+rs.getString("date")+
" 价格:"+rs.getString("amt"));
}
} //ResultSet转换成list
public static List resultSetToList(ResultSet rs) throws java.sql.SQLException {
if (rs == null)
return Collections.EMPTY_LIST;
ResultSetMetaData md = rs.getMetaData(); //得到结果集(rs)的结构信息,比如字段数、字段名等
int columnCount = md.getColumnCount(); //返回此 ResultSet 对象中的列数
List list = new ArrayList();
Map rowData;
while (rs.next()) {
rowData = new HashMap(columnCount);
for (int i = ; i <= columnCount; i++) {
rowData.put(md.getColumnName(i), rs.getObject(i));
}
list.add(rowData);
System.out.println("list:" + list.toString());
}
return list;
} //删除表
public static Integer dropTable(String tableName) throws SQLException, ClassNotFoundException {
conn = connectGreenplum();
String sql = "DROP TABLE if EXISTS "+tableName+";";
pstmt = conn.prepareStatement(sql);
Integer rs = pstmt.executeUpdate();
return rs;
} //删除外部表
public static Integer dropExternalTable(String tableName) throws SQLException, ClassNotFoundException {
conn = connectGreenplum();
String sql = "DROP EXTERNAL TABLE if EXISTS "+tableName+";";
pstmt = conn.prepareStatement(sql);
Integer rs = pstmt.executeUpdate();
return rs;
} //创建表
public static Integer createTable(String tbName,String columnInfo,String distributedKey) throws SQLException, ClassNotFoundException {
conn = connectGreenplum();
TbStructure tbStructure = new TbStructure();
String sql = "CREATE TABLE "+tbName+" ("+columnInfo+")\n" +
"WITH (appendonly="+tbStructure.isAppendonly()+", " +
"compresstype="+tbStructure.getCompresstype()+",\n" +
"compresslevel="+tbStructure.getCompresslevel()+") DISTRIBUTED BY ("+distributedKey+");";
pstmt = conn.prepareStatement(sql);
Integer rs = pstmt.executeUpdate();
return rs;
} //创建可读外部表,需要启动gpfdist服务,再导入csv
public static Integer createExternalTable(String tbName,String columnInfo,String location,
String format,String delimiter) throws SQLException, ClassNotFoundException {
conn = connectGreenplum();
String sql = "CREATE EXTERNAL TABLE "+tbName+" ("+columnInfo+") \n" +
"LOCATION ("+"\'"+location+"\'"+")\n" +
"FORMAT "+"\'"+format+"\'"+" (DELIMITER "+"\'"+delimiter+"\'"+")\n";
pstmt = conn.prepareStatement(sql);
Integer rs = pstmt.executeUpdate();
System.out.println("成功创建外部表");
return rs;
} public static void main(String[] args) {
try {
// 插入功能
/*String insertSql = "insert into tb_cp_02 values(?,?,?);";
TbInfo tbInfo1 = new TbInfo();
tbInfo1.setId("7");
tbInfo1.setDate("2013-06-01");
tbInfo1.setAmt("500.00");
insert(insertSql,tbInfo1);*/
// 删除功能
/*String deleteSql = "delete from tb_cp_02 where id = ?";
TbInfo tbInfo1 = new TbInfo();
tbInfo1.setId("2");
delete(deleteSql,tbInfo1);*/ // 修改功能
/*String updateSql = "update tb_cp_02 set amt = ? where id = ?";
TbInfo tbInfo1 = new TbInfo();
tbInfo1.setId("3");
tbInfo1.setAmt("1001.0");
update(updateSql,tbInfo1);*/ /*for (TbInfo tb:tbInfos
) {
System.out.println(tb.getId());
}*/
//dropTable("tb_tag_1_read");
//createTable("foo","a int, b text","a");
// dropExternalTable("tb_tag_1_read");
// createExternalTable("tb_tag_1_read","id text,school_commun_flag text,wire_tv_flag text",
// "gpfdist://mdw:8081/20190108.csv","CSV",";");
update("update tb_cp_02 set amt = ? where id = ?",new Object[]{"",""}); //查询
String selectSql = "select * from tb_cp_02";
ResultSet rs = query(selectSql);
List<TbInfo> tbInfos = resultSetToList(rs);
Iterator it = tbInfos.iterator();
while(it.hasNext()) {
Map hm = (Map)it.next();
System.out.println(hm.get("id"));
System.out.println(hm.get("amt"));
System.out.println(hm.get("date"));
}
closeConnection();
} catch (Exception e) {
e.printStackTrace(); }
}
}
JDBC连接Greenplum数据库,封装了增删改查的更多相关文章
- 【Python + Mysql】之用pymysql库连接Mysql数据库并进行增删改查操作
用pip下载pymysql并引用 具体请参考文章: <Python之MySQL数据库增删改查操作> <python3.6 使用 pymysql 连接 Mysql 数据库及 简单的增删 ...
- .net 连接SqlServer数据库及基本增删改查
一.写在前面 因为这学期选修的 .net 课程就要上机考试了,所以总结下.net 操作 SqlServer 数据的方法.(因为本人方向是 Java,所以对.net 的了解不多,但以下所写代码均是经过测 ...
- java连接mysql数据库 三 实现增删改查操作
同以前一样,先写一个数据库打开和关闭操作类 public class DBConnection { String driver = "com.mysql.jdbc.Driver"; ...
- ORM 实现数据库表的增删改查
这次通过反射技术来实现一下数据库表的增删改查对象关系映射(英语:Object Relational Mapping,简称ORM,或O/RM,或O/R mapping) 注:引用时约束了以下几点: 数据 ...
- Python进阶----数据库的基础,关系型数据库与非关系型数据库(No SQL:not only sql),mysql数据库语言基础(增删改查,权限设定)
day37 一丶Python进阶----数据库的基础,mysql数据库语言基础(增删改查,权限设定) 什么是数据库: 简称:DataBase ---->DB 数据库即存放数据的仓库, ...
- 十四:SpringBoot-配置MongoDB数据库,实现增删改查逻辑
SpringBoot-配置MongoDB数据库,实现增删改查逻辑 1.MongoDB数据库 1.1 MongoDB简介 1.2 MongoDB特点 2.SpringBoot整合MongoDB 2.1 ...
- Android(java)学习笔记245:ContentProvider使用(银行数据库创建和增删改查的案例)
1. Android的四大组件: (1)Activity 用户交互的UI界面 (2)Service 后台运行的服务 (3)BroadcastReceiver 广播接收者 (4)ContentPro ...
- Flutter数据库Sqflite之增删改查
Flutter数据库Sqflite之增删改查 简介 sqflite是Flutter的SQLite插件,支持iOS和Android,目前官方版本是sqflite1.1.3 sqflite插件地址:h ...
- Vc数据库编程基础MySql数据库的表增删改查数据
Vc数据库编程基础MySql数据库的表增删改查数据 一丶表操作命令 1.查看表中所有数据 select * from 表名 2.为表中所有的字段添加数据 insert into 表名( 字段1,字段2 ...
- Android(java)学习笔记189:ContentProvider使用(银行数据库创建和增删改查的案例)
1. Android的四大组件: (1)Activity 用户交互的UI界面 (2)Service 后台运行的服务 (3)BroadcastReceiver 广播接收者 (4)ContentPro ...
随机推荐
- 【转】不用软件,解压Win8/Win8.1的install.wim文件
今天用好压解压Windows 8.1的install.wim文件,居然提示文件损坏,换了7Z仍然如此:其实文件是好的.只不过这些软件暂时不支持罢了,还好可以用dism命令来手动完成. 一.检查镜像版本 ...
- DMV--sys.dm_os_ring_buffers
DMV 'sys.dm_os_ring_buffers' 可以用来诊断数据库连接和数据库内存方面的问题,但MSDN上找不到相应的介绍,网上找到以下相关资料: 1>sys.dm_os_ring_b ...
- can not update ICEAuthority file mint或则ubuntu
引起的原因为:设置了用户自动登录引起的. 1)去除自动登录 2)删除 ICEAuthority文件. 即可.
- EF框架下的双表查询
最近想使用ef做一些开发但是遇到了一些小问题就是如何实现多表的查询然后经过查资料终于找出了结果 我们知道ef中表的关系是一对一 一对多 多对多 接下来就讲一下一对一的关系下的栗子 先编写两个表 第 ...
- MongoDB .Net Driver(C#驱动) - 内嵌数组/嵌入文档的操作(增加、删除、修改、查询(Linq 分页))
目录 一.前言 1. 运行环境 二.前期准备工作 1. 创建 MongoDBContext MongoDb操作上下文类 2.创建测试类 3.创建测试代码 三.内嵌数组增加元素操作 1.Update.S ...
- UWP开发入门(四)——自定义CommandBar
各位好,再次回到UWP开发入门系列,刚回归可能有些不适应,所以今天我们讲个简单的,自定义CommandBar,说通俗点就是自定义类似AppBarButton的东西,然后扔到CommandBar中使用. ...
- JAVA常见面试题之Forward和Redirect的区别 (转发和重定向)
阅读目录 一:间接请求转发(Redirect) 二:直接请求转发(Forward) 用户向服务器发送了一次HTTP请求,该请求可能会经过多个信息资源处理以后才返回给用户,各个信息资源使用请求转发机制相 ...
- Spring Boot启动过程(六):内嵌Tomcat中StandardHost、StandardContext和StandardWrapper的启动
看代码有助于线上出现预料之外的事的时候,不至于心慌... StandardEngine[Tomcat].StandardHost[localhost]的启动与StandardEngine不在同一个线程 ...
- jquery源码解析:jQuery数据缓存机制详解2
上一课主要讲了jQuery中的缓存机制Data构造方法的源码解析,这一课主要讲jQuery是如何利用Data对象实现有关缓存机制的静态方法和实例方法的.我们接下来,来看这几个静态方法和实例方法的源码解 ...
- 如何使用Node爬虫利器Puppteer进行自动化测试
文:华为云DevCloud 乐少 1.背景 1.1 前端自动化测试较少 前端浏览器众多导致页面兼容性问题比较多,另外界面变化比较快,一个月内可能页面改版两三次,这样导致对前端自动化测试较少,大家也不是 ...