dws java_GaussDB(DWS)流式数据入库实践三:Java接口

本文介绍了如何使用Java JDBC接口的CopyManager类将流式数据高效地导入到GaussDB(DWS)中。通过示例程序展示了如何建立连接、设置属性、执行COPY语句及处理数据,从而实现数据入库。
摘要由CSDN通过智能技术生成

GaussDB(DWS)数据入库方式主要有三种:INSERT/COPY/FDW,三者性能INSERT最差,FDW(gds外表/obs外表)性能最好,但在很多客户场景下都是流式数据,不额外落盘,需要直接入库,这种场景下可以采用copy方式入库,Java作为编程语言,广泛应用于互联网应用中,Java访问数据库使用的是JDBC接口,支持copymanager,示例程序如下:

import java.sql.Connection;

import java.sql.DriverManager;

import java.util.Properties;

import org.postgresql.copy.CopyManager;

import org.postgresql.core.BaseConnection;

import java.io.StringReader;

public class copy_test {

/**

* @param args

*/

public static void main(String[] args) {

// TODO Auto-generated method stub

try {

Class.forName("org.postgresql.Driver");

} catch (ClassNotFoundException e) {

System.out.println("can not find Driver");

e.printStackTrace();

}

String url = "jdbc:postgresql://10.x.x.x:8000/postgres";

Properties props = new Properties();

props.setProperty("user", "jack");

props.setProperty("password", "Gauss_234");

try {

Connection con = DriverManager.getConnection(url, props);

con.setAutoCommit(false);

CopyManager cm = null;

StringReader sr = null;

String quote = "$";

String delimter = "|";

String sql = "copy test from STDIN with (format 'CSV', delimiter '|', quote '$')";

System.out.println(sql);

cm = new CopyManager((BaseConnection) con);

StringBuffer tuples = new StringBuffer();

for (int j = 0; j < 3; j++) {

tuples.append(quote + "1" + quote + delimter + quote + "a" + quote + "\n");

}

sr = new StringReader(tuples.toString());

long rows = cm.copyIn(sql, sr);// 执行copy入库

con.commit();// 提交

con.close();

} catch (Exception se) {

se.printStackTrace();

}

}

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值