要启动好gp服务,再尝试连接

192.168.94.135是主节点(master)的ip

驱动Jar包在官网获取

嫌麻烦,可以直接用我在网盘分享的Jar包,版本较老

链接:https://pan.baidu.com/s/1gVsxupUNUPXuewYlXHmgyw
提取码:bq1c

  1. package com.advance.JDBC;
  2.  
  3. import java.sql.*;
  4. import java.util.*;
  5.  
  6. /**
  7. * @Auther: 谷天乐
  8. * @Date: 2018/11/14 16:47
  9. * @Description:
  10. * 通过JDBC连接Greenplum
  11. */
  12. public class Connect_Greenplum {
  13. //表信息
  14. static class TbInfo
  15. {
  16. //分布键
  17. String id;
  18. //日期
  19. String date;
  20. //价格
  21. String amt;
  22.  
  23. public String getId() {
  24. return id;
  25. }
  26.  
  27. public void setId(String id) {
  28. this.id = id;
  29. }
  30.  
  31. public String getDate() {
  32. return date;
  33. }
  34.  
  35. public void setDate(String date) {
  36. this.date = date;
  37. }
  38.  
  39. public String getAmt() {
  40. return amt;
  41. }
  42.  
  43. public void setAmt(String amt) {
  44. this.amt = amt;
  45. }
  46. }
  47.  
  48. //表结构
  49. static class TbStructure{
  50. //appendonly属性
  51. boolean appendonly = true;
  52. //压缩类型
  53. String compresstype = "zlib";
  54. //压缩级别
  55. int compresslevel = ;
  56. //表的列和类型,用逗号分隔
  57. String columnInfo;
  58. //表名称
  59. String tbName;
  60. //分布键
  61. String distributedKey;
  62.  
  63. public String getCompresstype() {
  64. return compresstype;
  65. }
  66.  
  67. public void setCompresstype(String compresstype) {
  68. this.compresstype = compresstype;
  69. }
  70.  
  71. public boolean isAppendonly() {
  72. return appendonly;
  73. }
  74.  
  75. public void setAppendonly(boolean appendonly) {
  76. this.appendonly = appendonly;
  77. }
  78.  
  79. public int getCompresslevel() {
  80. return compresslevel;
  81. }
  82.  
  83. public void setCompresslevel(int compresslevel) {
  84. this.compresslevel = compresslevel;
  85. }
  86.  
  87. public String getColumnInfo() {
  88. return columnInfo;
  89. }
  90.  
  91. public void setColumnInfo(String columnInfo) {
  92. this.columnInfo = columnInfo;
  93. }
  94.  
  95. public String getTbName() {
  96. return tbName;
  97. }
  98.  
  99. public void setTbName(String tbName) {
  100. this.tbName = tbName;
  101. }
  102.  
  103. public String getDistributedKey() {
  104. return distributedKey;
  105. }
  106.  
  107. public void setDistributedKey(String distributedKey) {
  108. this.distributedKey = distributedKey;
  109. }
  110. }
  111.  
  112. //三大核心接口
  113. private static Connection conn = null;
  114. private static PreparedStatement pstmt = null;
  115. private static ResultSet rs = null;
  116.  
  117. //连接数据库
  118. public static Connection connectGreenplum() throws ClassNotFoundException, SQLException {
  119. // URL
  120. String url = "jdbc:pivotal:greenplum://192.168.94.135:5432;DatabaseName=testdw";
  121. // 数据库用户名
  122. String username = "gpadmin";
  123. // 数据库密码
  124. String password = "gpadmin";
  125. // 加载驱动
  126. Class.forName("com.pivotal.jdbc.GreenplumDriver");
  127. // 获取连接
  128. conn = DriverManager.getConnection(url, username, password);
  129. return conn;
  130. }
  131.  
  132. //关闭数据库连接
  133. public static void closeConnection(){
  134. if(rs!=null){
  135. try {
  136. rs.close();
  137. } catch (SQLException e) {
  138. e.printStackTrace();
  139. }
  140. }
  141. if(pstmt!=null){
  142. try {
  143. pstmt.close();
  144. } catch (SQLException e) {
  145. e.printStackTrace();
  146. }
  147. }
  148. if(conn!=null){
  149. try {
  150. conn.close();
  151. } catch (SQLException e) {
  152. e.printStackTrace();
  153. }
  154. }
  155. }
  156. //查询方法
  157. public static ResultSet query(String sql) throws SQLException, ClassNotFoundException {
  158. Connection conn = connectGreenplum();
  159. pstmt = conn.prepareStatement(sql);
  160. rs = pstmt.executeQuery();
  161. return rs;
  162. }
  163.  
  164. //通用增删改
  165. public static void update(String sql,Object []values) throws SQLException, ClassNotFoundException {
  166. //获取数据库链接
  167. conn=connectGreenplum();
  168. try {
  169. //预编译
  170. pstmt=conn.prepareStatement(sql);
  171. //获取ParameterMetaData()对象
  172. ParameterMetaData pmd=pstmt.getParameterMetaData();
  173. //获取参数个数
  174. int number=pmd.getParameterCount();
  175. //循环设置参数值
  176. for (int i = ; i <=number; i++) {
  177. pstmt.setObject(i, values[i-]);
  178. }
  179. pstmt.executeUpdate();
  180. } catch (SQLException e) {
  181. e.printStackTrace();
  182. }finally{
  183. closeConnection();
  184. }
  185. }
  186.  
  187. //新增方法
  188. public static Integer insert(String sql,TbInfo tbInfo) throws SQLException, ClassNotFoundException {
  189. Connection conn = connectGreenplum();
  190. pstmt = conn.prepareStatement(sql);
  191. pstmt.setString(,tbInfo.getId());
  192. pstmt.setString(,tbInfo.getDate());
  193. pstmt.setString(,tbInfo.getAmt());
  194. Integer rs = pstmt.executeUpdate();
  195. return rs;
  196. }
  197.  
  198. //删除方法
  199. public static Integer delete(String sql,TbInfo tbInfo) throws SQLException, ClassNotFoundException {
  200. conn = connectGreenplum();
  201. pstmt = conn.prepareStatement(sql);
  202. pstmt.setString(,tbInfo.getId());
  203. Integer rs = pstmt.executeUpdate();
  204. return rs;
  205. }
  206.  
  207. //修改方法
  208. public static Integer update(String sql,TbInfo tbInfo) throws SQLException, ClassNotFoundException {
  209. conn = connectGreenplum();
  210. pstmt = conn.prepareStatement(sql);
  211. pstmt.setString(,tbInfo.getAmt());
  212. pstmt.setString(,tbInfo.getId());
  213. Integer rs = pstmt.executeUpdate();
  214. return rs;
  215. }
  216.  
  217. //输出
  218. public static void output(ResultSet rs) throws SQLException {
  219. while(rs.next())
  220. {
  221. System.out.println(
  222. "id:"+rs.getString("id")+
  223. " 日期:"+rs.getString("date")+
  224. " 价格:"+rs.getString("amt"));
  225. }
  226. }
  227.  
  228. //ResultSet转换成list
  229. public static List resultSetToList(ResultSet rs) throws java.sql.SQLException {
  230. if (rs == null)
  231. return Collections.EMPTY_LIST;
  232. ResultSetMetaData md = rs.getMetaData(); //得到结果集(rs)的结构信息,比如字段数、字段名等
  233. int columnCount = md.getColumnCount(); //返回此 ResultSet 对象中的列数
  234. List list = new ArrayList();
  235. Map rowData;
  236. while (rs.next()) {
  237. rowData = new HashMap(columnCount);
  238. for (int i = ; i <= columnCount; i++) {
  239. rowData.put(md.getColumnName(i), rs.getObject(i));
  240. }
  241. list.add(rowData);
  242. System.out.println("list:" + list.toString());
  243. }
  244. return list;
  245. }
  246.  
  247. //删除表
  248. public static Integer dropTable(String tableName) throws SQLException, ClassNotFoundException {
  249. conn = connectGreenplum();
  250. String sql = "DROP TABLE if EXISTS "+tableName+";";
  251. pstmt = conn.prepareStatement(sql);
  252. Integer rs = pstmt.executeUpdate();
  253. return rs;
  254. }
  255.  
  256. //删除外部表
  257. public static Integer dropExternalTable(String tableName) throws SQLException, ClassNotFoundException {
  258. conn = connectGreenplum();
  259. String sql = "DROP EXTERNAL TABLE if EXISTS "+tableName+";";
  260. pstmt = conn.prepareStatement(sql);
  261. Integer rs = pstmt.executeUpdate();
  262. return rs;
  263. }
  264.  
  265. //创建表
  266. public static Integer createTable(String tbName,String columnInfo,String distributedKey) throws SQLException, ClassNotFoundException {
  267. conn = connectGreenplum();
  268. TbStructure tbStructure = new TbStructure();
  269. String sql = "CREATE TABLE "+tbName+" ("+columnInfo+")\n" +
  270. "WITH (appendonly="+tbStructure.isAppendonly()+", " +
  271. "compresstype="+tbStructure.getCompresstype()+",\n" +
  272. "compresslevel="+tbStructure.getCompresslevel()+") DISTRIBUTED BY ("+distributedKey+");";
  273. pstmt = conn.prepareStatement(sql);
  274. Integer rs = pstmt.executeUpdate();
  275. return rs;
  276. }
  277.  
  278. //创建可读外部表,需要启动gpfdist服务,再导入csv
  279. public static Integer createExternalTable(String tbName,String columnInfo,String location,
  280. String format,String delimiter) throws SQLException, ClassNotFoundException {
  281. conn = connectGreenplum();
  282. String sql = "CREATE EXTERNAL TABLE "+tbName+" ("+columnInfo+") \n" +
  283. "LOCATION ("+"\'"+location+"\'"+")\n" +
  284. "FORMAT "+"\'"+format+"\'"+" (DELIMITER "+"\'"+delimiter+"\'"+")\n";
  285. pstmt = conn.prepareStatement(sql);
  286. Integer rs = pstmt.executeUpdate();
  287. System.out.println("成功创建外部表");
  288. return rs;
  289. }
  290.  
  291. public static void main(String[] args) {
  292. try {
  293. // 插入功能
  294. /*String insertSql = "insert into tb_cp_02 values(?,?,?);";
  295. TbInfo tbInfo1 = new TbInfo();
  296. tbInfo1.setId("7");
  297. tbInfo1.setDate("2013-06-01");
  298. tbInfo1.setAmt("500.00");
  299. insert(insertSql,tbInfo1);*/
  300. // 删除功能
  301. /*String deleteSql = "delete from tb_cp_02 where id = ?";
  302. TbInfo tbInfo1 = new TbInfo();
  303. tbInfo1.setId("2");
  304. delete(deleteSql,tbInfo1);*/
  305.  
  306. // 修改功能
  307. /*String updateSql = "update tb_cp_02 set amt = ? where id = ?";
  308. TbInfo tbInfo1 = new TbInfo();
  309. tbInfo1.setId("3");
  310. tbInfo1.setAmt("1001.0");
  311. update(updateSql,tbInfo1);*/
  312.  
  313. /*for (TbInfo tb:tbInfos
  314. ) {
  315. System.out.println(tb.getId());
  316. }*/
  317. //dropTable("tb_tag_1_read");
  318. //createTable("foo","a int, b text","a");
  319. // dropExternalTable("tb_tag_1_read");
  320. // createExternalTable("tb_tag_1_read","id text,school_commun_flag text,wire_tv_flag text",
  321. // "gpfdist://mdw:8081/20190108.csv","CSV",";");
  322. update("update tb_cp_02 set amt = ? where id = ?",new Object[]{"",""});
  323.  
  324. //查询
  325. String selectSql = "select * from tb_cp_02";
  326. ResultSet rs = query(selectSql);
  327. List<TbInfo> tbInfos = resultSetToList(rs);
  328. Iterator it = tbInfos.iterator();
  329. while(it.hasNext()) {
  330. Map hm = (Map)it.next();
  331. System.out.println(hm.get("id"));
  332. System.out.println(hm.get("amt"));
  333. System.out.println(hm.get("date"));
  334. }
  335. closeConnection();
  336. } catch (Exception e) {
  337. e.printStackTrace();
  338.  
  339. }
  340. }
  341. }

JDBC连接Greenplum数据库,封装了增删改查的更多相关文章

  1. 【Python + Mysql】之用pymysql库连接Mysql数据库并进行增删改查操作

    用pip下载pymysql并引用 具体请参考文章: <Python之MySQL数据库增删改查操作> <python3.6 使用 pymysql 连接 Mysql 数据库及 简单的增删 ...

  2. .net 连接SqlServer数据库及基本增删改查

    一.写在前面 因为这学期选修的 .net 课程就要上机考试了,所以总结下.net 操作 SqlServer 数据的方法.(因为本人方向是 Java,所以对.net 的了解不多,但以下所写代码均是经过测 ...

  3. java连接mysql数据库 三 实现增删改查操作

    同以前一样,先写一个数据库打开和关闭操作类 public class DBConnection { String driver = "com.mysql.jdbc.Driver"; ...

  4. ORM 实现数据库表的增删改查

    这次通过反射技术来实现一下数据库表的增删改查对象关系映射(英语:Object Relational Mapping,简称ORM,或O/RM,或O/R mapping) 注:引用时约束了以下几点: 数据 ...

  5. Python进阶----数据库的基础,关系型数据库与非关系型数据库(No SQL:not only sql),mysql数据库语言基础(增删改查,权限设定)

    day37 一丶Python进阶----数据库的基础,mysql数据库语言基础(增删改查,权限设定) 什么是数据库:    简称:DataBase ---->DB    数据库即存放数据的仓库, ...

  6. 十四:SpringBoot-配置MongoDB数据库,实现增删改查逻辑

    SpringBoot-配置MongoDB数据库,实现增删改查逻辑 1.MongoDB数据库 1.1 MongoDB简介 1.2 MongoDB特点 2.SpringBoot整合MongoDB 2.1 ...

  7. Android(java)学习笔记245:ContentProvider使用(银行数据库创建和增删改查的案例)

    1. Android的四大组件: (1)Activity  用户交互的UI界面 (2)Service  后台运行的服务 (3)BroadcastReceiver 广播接收者 (4)ContentPro ...

  8. Flutter数据库Sqflite之增删改查

    Flutter数据库Sqflite之增删改查   简介 sqflite是Flutter的SQLite插件,支持iOS和Android,目前官方版本是sqflite1.1.3 sqflite插件地址:h ...

  9. Vc数据库编程基础MySql数据库的表增删改查数据

    Vc数据库编程基础MySql数据库的表增删改查数据 一丶表操作命令 1.查看表中所有数据 select * from 表名 2.为表中所有的字段添加数据 insert into 表名( 字段1,字段2 ...

  10. Android(java)学习笔记189:ContentProvider使用(银行数据库创建和增删改查的案例)

    1. Android的四大组件: (1)Activity  用户交互的UI界面 (2)Service  后台运行的服务 (3)BroadcastReceiver 广播接收者 (4)ContentPro ...

随机推荐

  1. TSQL--聚合函数

    --======================================================== --COUNT --COUNT(1) 和COUNT(*) 计算结果相同,COUNT ...

  2. linux的定制和发布(二)

    Linux的发布         有时候希望将定制好的Linux移植到其他的机器上使用,所以我们将定制好的Linux制作 成安装光盘的形式,可以方便在其他机器上安装. 为此我们要先制作一个引导系统,由 ...

  3. openvswitch dpdk

    作者:张华  发表于:2016-04-07版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本版权声明 ( http://blog.csdn.net/quqi99 ) 硬件要 ...

  4. java—数据存储过程 (54)

    存储过程:procedure:就是一段可执行程序.这个程序运行在数据中. Begin = { End = } If Else 也可以接收参数. 1 定义一个procedure: CREATE PROC ...

  5. “全栈2019”Java第一百零七章:匿名内部类与构造方法注意事项

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...

  6. Windows Python Extension Packages

    备注: 1.先要安装wheel库:pip install wheel 2.下载wheel,切换至下载路径,然后安装:pip install wheel库名.whl Windows Python Ext ...

  7. sprintf与strcat

    sprintf可以将整数转化为字符串,也可以连接两个字符串.但是用sprintf在连接两个字符串时,容易出现错误. 因此连接两个字符串时候用strcat, 将整数转化为字符串时候用sprintf. 转 ...

  8. 如何自己写aspx过狗D盾一句话木马

    hi,我是凉风,(以下内容纯属个人见解,如有不同的意见欢迎回复指出) ,本菜比发现aspx过狗的姿势不常见,不像php一样一抓一大把,于是我决定研究一下aspx 本文作者:i春秋签约作家——凉风 引用 ...

  9. MongoDB健壮集群——用副本集做分片

    1.    MongoDB分片+副本集 健壮的集群方案 多个配置服务器 多个mongos服务器  每个片都是副本集 正确设置w 架构图 说明: 1.   此实验环境在一台机器上通过不同port和dbp ...

  10. CentOS 7 Apache服务的安装与配置(转)

    https://blog.51cto.com/13525470/2070375 一.Apache简介 Apache 是一个知名的开源Web服务器.早期的Apache服务器由Apache Group来维 ...