PostgreSQL:Java使用CopyManager实现客户端文件COPY导入
在MySQL中,可以使用LOAD DATA INFILE和LOAD DATA LOCAL INFILE两种方式导入文本文件中的数据到数据库表中,速度非常快。其中LOAD DATA INFILE使用的文件要位于MySQL所在服务器上,LOAD DATA LOCAL INFILE则使用的是客户端的文件。
LOAD DATA INFILE 'data.txt' INTO TABLE table_name;
LOAD DATA LOCAL INFILE 'data.txt' INTO TABLE table_name;
在PostgreSQL中也可以导入相同类型的文本文件,使用的是COPY命令:
COPY table_name FROM 'data.txt';
但是这个语句只能导入PostgreSQL所在服务器上的文件,要想导入客户端文件,就需要使用下面的语句:
COPY table_name FROM STDIN;
public void copyFromFile(Connection connection, String filePath, String tableName) throws SQLException, IOException {FileInputStream fileInputStream = null;try {CopyManager copyManager = new CopyManager((BaseConnection)connection);fileInputStream = new FileInputStream(filePath);copyManager.copyIn("COPY " + tableName + " FROM STDIN", fileInputStream);} finally {if (fileInputStream != null) {try {fileInputStream.close();} catch (IOException e) {e.printStackTrace();}}}}
另外,还可以使用COPY table_name TO STDOUT来导出数据文件到本地,和上面的导入相反,可以用于数据库备份。此外,还支持导出一个SQL查询结果:
COPY (SELECT columns FROM table_name WHERE ……) TO STDOUT;
Java代码如下:
public void copyToFile(Connection connection, String filePath, String tableOrQuery) throws SQLException, IOException {FileOutputStream fileOutputStream = null;try {CopyManager copyManager = new CopyManager((BaseConnection)connection);fileOutputStream = new FileOutputStream(filePath);copyManager.copyOut("COPY " + tableOrQuery + " TO STDOUT", fileOutputStream);} finally {if (fileOutputStream != null) {try {fileOutputStream.close();} catch (IOException e) {e.printStackTrace();}}}}
// 将本地d:/data.txt文件中的数据导入到person_info表中 copyFromFile(connection, "d:/data.txt", "person_info"); // 将person_info中的数据导出到本地文件d:/data.txt copyToFile(connection, "d:/data.txt", "person_info"); // 将SELECT p_name,p_age FROM person_info查询结果导出到本地文件d:/data.txt copyToFile(connection, "d:/data.txt", "(SELECT p_name,p_age FROM person_info)");
https://blog.csdn.net/xiao__gui/article/details/12090341
PostgreSQL:Java使用CopyManager实现客户端文件COPY导入相关推荐
- 【JavaWeb开发】使用java实现简单的Excel文件的导入与导出(POI)
前言:在实际的开发中,我们经常需要用户在界面中输入大量重复且有规律的数据,但是一个表单一个表单的填写效率过慢,而且过多的表单也会给JavaWeb的业务逻辑开发带来不小的困扰,所以我们可以使用一个Exc ...
- JAVA通过Hutool解析CSV文件【导入即用,无需封装】
JAVA通过Hutool解析CSV文件 Java解析CSV方式有很多种方式[javaCSV(未更新),openCSV(apache)],这篇文章主要是用到Hutool工具类,能快速的解析读取,不需 ...
- Java服务端向客户端写文件_java实现客户端向服务器发送文件
本文实例为大家分享了java实现客户端向服务器发送文件的具体代码,供大家参考,具体内容如下 服务器源代码: import java.io.BufferedReader; import java.io. ...
- java服务器客户端文件,客户端服务器文件传输Java
这是我使用的方法,它使用套接字的输入和输出流来发送和接收文件,完成后,它将自动重新启动服务器并从客户端重新连接到服务器. 服务器代码: package app.server; import java. ...
- Java学习日记8:文件上传工具类的实现和服务器给客户端发送图片
文件上传的工具类: 每次文件上传要写很多东西,把这些封装成一个工具类,以后用起来就会方便很多. 先创建一个类存储上传文件的信息: package com.upload; /*** 每上传成功一个文件的 ...
- 【SpringBoot、java文件copy、Mybatis、SpringApplication】
Spring Boot 整合 MyBatis 快速搭建 Web 开发环境 SpringBoot项目创建与整合mybatis Java文件copy拷贝的4种方式 小白学SpringBoot mybati ...
- java实现文件copy
话不多说直接看代码: 方法1:直接利用FileInputStream,FileOutputStream来实现内容的copy public static void listDicTory(File sr ...
- PostgreSQL Java 开发者手册
标签 PostgreSQL , Java , php , ruby , python , C 背景 转自 http://zetcode.com/db/postgresqljavatutorial/ 正 ...
- CentOS部署JAVA程序、安装Tomcat以及安装导入mysql文件的方法
注意:由于流程太过于繁杂,且坑多,这里只保留关键步骤,具体小问题百度! ________________________ 先进入CentOS6.8图形化界面(如阿里云没有默认的图形化界面,自己去安装h ...
最新文章
- Seaborn可视化图像调整图像大小(figure size)方法实战(Adjust the Figure Size)
- 115页Slides带你领略深度生成模型全貌(附PPT)
- 计算机视觉开源库OpenCV之利用开操作(Opening Operation)修复受损照片方法
- 第一篇:Mysql数据类型
- 【组原】广州大学计算机组成原理考试部分题+复习资料(2020-2021)
- 成熟就是深谙世故却不世故
- C# ASP.NET MVC 配置允许跨域访问
- grafana的前端技术_Grafana开发环境搭建
- 类型②typeof 操作符
- openwrt源码下载移植
- 《时空幻境》Braid.v1.010.r2-RES-patch
- uni-app、小程序项目分包经验之谈与天坑异常:RangeError: Maximum call stack size exceeded
- 找出不大于n的最大质数
- STK入门级模拟卫星轨道
- Shell 编程三剑客
- Monte Carlo tree search 学习
- Android属性ems
- A5SHB,A5SHB芯片三极管规格书
- 循环语句—for/while/do...while
- 密码学Kerberos协议理解