openGauss学习笔记-165 openGauss 数据库运维-备份与恢复-导入数据-使用COPY FROM STDIN导入数据-通过本地文件导入导出数据

文章目录

    • openGauss学习笔记-165 openGauss 数据库运维-备份与恢复-导入数据-使用COPY FROM STDIN导入数据-通过本地文件导入导出数据
      • 165.1 示例1:通过本地文件导入导出数据

openGauss学习笔记-165 openGauss 数据库运维-备份与恢复-导入数据-使用COPY FROM STDIN导入数据-通过本地文件导入导出数据

165.1 示例1:通过本地文件导入导出数据

在使用JAVA语言基于openGauss进行二次开发时,可以使用CopyManager接口,通过流方式,将数据库中的数据导出到本地文件或者将本地文件导入数据库中,文件格式支持CSV、TEXT等格式。

样例程序如下,执行时需要加载openGauss的JDBC驱动。

import java.sql.Connection; 
import java.sql.DriverManager; 
import java.io.IOException;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.sql.SQLException; 
import org.opengauss.copy.CopyManager; 
import org.opengauss.core.BaseConnection;
 
public class Copy{ 

     public static void main(String[] args) 
     { 
      String urls = new String("jdbc:opengauss://localhost:8000/postgres"); //数据库URL 
      String username = new String("username");            //用户名 
      String password = new String("passwd");             //密码 
      String tablename = new String("migration_table"); //定义表信息 
      String tablename1 = new String("migration_table_1"); //定义表信息 
      String driver = "org.opengauss.Driver"; 
      Connection conn = null; 
      
      try { 
          Class.forName(driver); 
          conn = DriverManager.getConnection(urls, username, password);         
      } catch (ClassNotFoundException e) { 
           e.printStackTrace(System.out); 
      } catch (SQLException e) { 
           e.printStackTrace(System.out); 
      } 
      
      // 将表migration_table中数据导出到本地文件d:/data.txt  
      try {
          copyToFile(conn, "d:/data.txt", "(SELECT * FROM migration_table)");
      } catch (SQLException e) {
          // TODO Auto-generated catch block
          e.printStackTrace();
      } catch (IOException e) {
          // TODO Auto-generated catch block
          e.printStackTrace();
      }    
      //将d:/data.txt中的数据导入到migration_table_1中。
      try {
          copyFromFile(conn, "d:/data.txt", tablename1);
      } catch (SQLException e) {
          // TODO Auto-generated catch block
          e.printStackTrace();
      } catch (IOException e) {
          // TODO Auto-generated catch block
          e.printStackTrace();
      }  

      // 将表migration_table_1中的数据导出到本地文件d:/data1.txt  
      try {
          copyToFile(conn, "d:/data1.txt", tablename1);
      } catch (SQLException e) {
          // TODO Auto-generated catch block
          e.printStackTrace();
      } catch (IOException e) {
          // TODO Auto-generated catch block
          e.printStackTrace();
      }        
  } 

  public static 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();  
             }  
         }  
     }  
 }  
     public static 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();  
              }  
          }  
      }  
  }  
}

👍 点赞,你的认可是我创作的动力!

⭐️ 收藏,你的青睐是我努力的方向!

✏️ 评论,你的意见是我进步的财富!

图片

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/258418.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Hutool--DFA 敏感词工具类

使用hutool的dfa工具类可以很好的帮助我们来实现敏感词过滤的功能,下面从用例入手来逐步地去j简单了解一下dfa工具类。 字典树 DFA算法的核心是建立了以敏感词为基础的许多敏感词树(字典树)。 它的基本思想是基于状态转移来检索敏感词。 字…

C++复合数据类型:vector|string

文章目录 模板类vector初始化访问修改添加 标准库类型string初始化访问拼接比较字符串 模板类vector 初始化 访问 修改 添加 数组长度在初始化时已经定义,访问范围也有限,数组长度还得通过计算 所以C中定义了很多扩展的“抽象数据类型”&#xff0c…

深度学习 tensorflow基础介绍

深度学习是一种基于人工神经网络的机器学习方法,其目标是通过模仿人脑的结构和功能,实现对大量复杂数据的学习和理解。它可以在图像识别、语音识别、自然语言处理等领域取得惊人的成就。 深度学习的引入引出了TensorFlow,它是一个由Google Br…

go语言指针变量定义及说明

go语言指针主要需要记住两个特殊符号, 一个是 & 用来获取变量对应的内存地址 另一个是 * 用来获取指针对应的变量值 下面是个最简单的go语言指针说明 package mainimport "fmt"//指针为内存地址func main() {var a string "指针对应的变量&…

互联网中的商品超卖问题及其解决方案:Java中Redis结合UUID的应用

前言 在设计商品下单和库存扣减,你一定遇到过这样的问题,库存扣减为0了,可是消费者还能下单,并将订单信息保存到了数据库里,针对商品超卖问题,作此篇以解决。 随着互联网商业的飞速发展,商品超…

【OpenHarmony】下载指定时间点的代码

1、正常初始化 repo init -u gitgitee.com:openharmony/manifest.git -b master --no-repo-verify 2、获取tag点的manifest文件 在OpenHarmony的CI系统上,进入tag管理系统。http://ci.openharmony.cn/workbench/cicd/codecontrol/tagsystem找到自己所需的tag文件…

PyQt6 QFontDialog字体对话框控件

锋哥原创的PyQt6视频教程: 2024版 PyQt6 Python桌面开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili2024版 PyQt6 Python桌面开发 视频教程(无废话版) 玩命更新中~共计50条视频,包括:2024版 PyQt6 Python桌面开发 视频教程(无废话版…

钓鱼篇(上)

前言 钓鱼的核心主要还是思路要大胆。今天主要从一个完整的钓鱼流程进行讲解,记录下自己在学习这方面的知识时,如何将其有机结合起来,实现一个蓝队无感的钓鱼攻击流程,真正体验下如何从细节入手,将最危险的地方化为最…

LeetCode Hot100 51.N皇后

题目: 按照国际象棋的规则,皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子。 n 皇后问题 研究的是如何将 n 个皇后放置在 nn 的棋盘上,并且使皇后彼此之间不能相互攻击。 给你一个整数 n ,返回所有不同的 n 皇后问题 的…

LeetCode刷题--- 电话号码的字母组合

个人主页:元清加油_【C】,【C语言】,【数据结构与算法】-CSDN博客 个人专栏 力扣递归算法题 http://t.csdnimg.cn/yUl2I 【C】 http://t.csdnimg.cn/6AbpV 数据结构与算法 http://t.csdnimg.cn/hKh2l 前言:这个专栏主要讲述递归递归、搜…

Java Catching and Handling Exceptions(二)

一、Try with resources语句 try with resources语句是声明一个或多个资源的try语句。资源是程序使用完后必须关闭的对象。try with resources语句确保在语句末尾关闭每个资源。任何实现java.lang.AutoCloseable的对象(包括实现java.io.Closeable的所有对象&#x…

探秘 AJAX:让网页变得更智能的异步技术(下)

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云…

基于ssm计算机科学与技术学习网站的设计与开发论文

摘 要 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本在校学习网站就是在这样的大环境下诞生,其可以帮助管理者在短时间内处理完毕庞大的数据信息&am…

【MySQL】Sql优化之索引的使用方式(145)

索引分类 1.单值索引 单的意思就是单列的值,比如说有一张数据库表,表内有三个字段,分别是 id name numberNo,我给name 这个字段加一个索引,这就是单值索引,因为只有name 这一列是索引; 一个表…

【SpringBoot篇】基于Redis实现生成全局唯一ID的方法

文章目录 🍔生成全局唯一ID🌹为什么要生成全局唯一id🌺生成全局id的方法✨代码实现 🍔生成全局唯一ID 是一种在分布式系统下用来生成全局唯一id的工具 在项目中生成全局唯一ID有很多好处,其中包括: 数据…

k8s集群1.23.0版本部署说明

1.部署 k8s1.23.0版本与1.26.0版本的部署基本差不多,只不过k8s 1.23版本不需要部署cri-docker,所以只需要在1.26.0版本部署的基础上不要cri-docker的部署即可 参考:kubeadm部署k8s 1.26.0版本高可用集群_kubeadm 高可用集群-CSDN博客 搭建…

动手学深度学习1 导学

深度学习导学课 课程基础信息整理00 预告01 课程安排02 深度学习介绍QA 课程基础信息整理 课程安排: https://courses.d2l.ai/zh-v2/ ppt 代码 视频等链接都在文档里有展现 李沐老师课程所用电子书:https://zh-v2.d2l.ai/ B站课程链接: http…

java生产环境问题-mysql写存储过程定时删除大数据量表

问题:生产环境流水表已经达到4000w条数据,不管是查询还是统计都受到了一定程度的影响。所以创建了分表,按照每个月进行存储。但是主表的数据还是很多,所以想到定时删除。 注意:生产环境之前的配置不算高,所…

鸿蒙-arkTs:访问控制授权申请

module.json5文件中 requestPermissions 进行配置(值为数组,可配置多个) ohos.permission.INTERNET {"name": "ohos.permission.INTERNET" }