GaussDB数据库使用COPY命令导数

目录

一、前言

二、GaussDB数据库使用COPY命令导数语法

1、语法COPY FROM

2、语法COPY TO

3、特别说明及参数示意

三、GaussDB数据库使用COPY命令导数示例

1、操作步骤

2、准备工作(示例)

3、把一个表的数据拷贝到一个文件(示例)

4、从一个数据文件拷贝数据到一个表(示例)

四、常见数据导入导出的场景

五、小结

一、前言

在数字化时代,数据是驱动业务决策和创新的关键要素。数据库作为数据存储、管理和分析的核心工具,其高效、准确的数据导入功能至关重要。

GaussDB作为华为推出的高性能数据库,提供了丰富的数据导入选项,其中之一便是COPY命令。COPY命令为数据迁移、备份恢复、大数据加载等场景提供了一个高效且灵活的手段。通过COPY命令,用户可以将外部文件、数据流或其他数据源的数据快速导入到GaussDB中,从而支持业务分析、报表生成、数据挖掘等多样化需求。

二、GaussDB数据库使用COPY命令导数语法

通过COPY命令实现在表和文件之间拷贝。在GaussDB中,COPY FROM从一个文件拷贝数据到一个表,COPY TO把一个表的数据拷贝到一个文件。

1、语法COPY FROM

COPY table_name [ ( column_name [, ...] ) ] 
    FROM { 'filename' | STDIN }
    [ [ USING ] DELIMITERS 'delimiters' ]
    [ WITHOUT ESCAPING ]
    [ LOG ERRORS ]
    [ REJECT LIMIT 'limit' ]
    [ [ WITH ] ( option [, ...] ) ]
    | copy_option
    | TRANSFORM  ( { column_name [ data_type ] [ AS transform_expr ] } [, ...] )
    | FIXED FORMATTER ( { column_name( offset, length ) } [, ...] ) [ ( option [, ...] ) | copy_option [  ...] ] ];

2、语法COPY TO

COPY table_name [ ( column_name [, ...] ) ]
    TO { 'filename' | STDOUT }
    [ [ USING ] DELIMITERS 'delimiters' ]
    [ WITHOUT ESCAPING ]
    [ [ WITH ] ( option [, ...] ) ]
    | copy_option
    | FIXED FORMATTER ( { column_name( offset, length ) } [, ...] ) [ ( option [, ...] ) | copy_option [  ...] ] ];

COPY query
    TO { 'filename' | STDOUT }
    [ WITHOUT ESCAPING ]
    [ [ WITH ] ( option [, ...] ) ]
    | copy_option
    | FIXED FORMATTER ( { column_name( offset, length ) } [, ...] ) [ ( option [, ...] ) | copy_option [  ...] ] ];

3、特别说明及参数示意

1)特别说明:

  • 语法中的FIXED FORMATTER ( { column_name( offset, length ) } [, ...] )以及 [copy_option [ ...] ] 的无冲突项可以任意排列组合。
  • (query)与[USING] DELIMITERS不兼容,即若COPY TO的数据来自于一个query的查询结果,那么COPY TO语法不能再指定[USING] DELIMITERS语法子句。
  • 对于FIXED FORMATTTER语法后面跟随的copy_option是以空格进行分隔的。
  • copy_option是指COPY原生的参数形式,而option是兼容外表导入的参数形式。

2)参数说明:

  • STDIN声明输入是来自标准输入。
  • STDOUT声明输出打印到标准输出。
  • FIXED打开字段固定长度模式(每条记录的每个字段长度相同。长度不足的字段以空格填充,数字类型字段左对齐,字符字段右对齐。字段和字段之间没有分隔符)。
  • WITHOUT ESCAPING在TEXT格式中,不对'\'和后面的字符进行转义。仅支持TEXT格式
  • FORMATTER在固定长度模式中,定义每一个字段在数据文件中的位置。按照column(offset,length)格式定义每一列在数据文件中的位置。
  • OPTION { option_name ' value ' }:用于指定兼容外表的各类参数
  • TRANSFORM ( { column_name [ data_type ] [ AS transform_expr ] } [, ...] )指定表中各个列的转换表达式;其中data_type指定该列在表达式参数中的数据类型;transform_expr为目标表达式,返回与表中目标列数据类型一致的结果值

三、GaussDB数据库使用COPY命令导数示例

COPY 属于SQL命令,导入导出的文件是在数据库服务端的进行的。且需要数据库管理员权限才可以执行,COPY对较大数据集的整体读写效率较好。

1、操作步骤

根据业务需求确定导数需求,提前做好规划,具体可参考如下步骤:

2、准备工作(示例)

1)指定(创建)数据文件存取目录。

登录数据库服务器,切换至omm用户,在“/home/omm”目录下创建用于存放数据文件的目录,此处取名“mydata”

“su omm

“mkdir mydata

Tip如果在目录操作中遇到类似“ls: cannot open directory .: Permission denied”报错,需要切换到“cd /home/omm”目录下,因为其它用户(omm是数据库用户)是不能在root目录下操作的。另外,有时候可能还需要通过“chmod”给文件或者文件夹赋权限,具体根据实际报错提示处理即可。

2)准备数据

COPY TO如果是从库表导出数据到文件,以文件形式保存,请先确认需要被导出的库表,实际业务中以真实存在的表为准,本次为了演示临时创建测试表。

-创建测试表
DROP TABLE IF EXISTS public.test_3;
CREATE TABLE public.test_3
(
  id int4,
  name varchar(20),
  course varchar(20),
  score int4
);

--插入测试数据
INSERT INTO public.test_3 VALUES (1, 'zhangsan', '语文', 90);
INSERT INTO public.test_3 VALUES (2, 'zhangsan', '数学', 95);
INSERT INTO public.test_3 VALUES (3, 'zhangsan', '英语', 85);
INSERT INTO public.test_3 VALUES (4, 'lisi', '语文', 85);
INSERT INTO public.test_3 VALUES (5, 'lisi', '数学', 90);
INSERT INTO public.test_3 VALUES (6, 'lisi', '英语', 95);

COPY FROM如果是从数据文件导入数据到库表,需要准备目标表和数据文件,目标表的表结构和数据文件的结构需要根据业务需求提前约定好。

--创建目标表
DROP TABLE IF EXISTS public.test_4;
CREATE TABLE public.test_4 
(
  id int4,
  name varchar(20),
  course varchar(20),
  score int4
);

数据文件建议均以“.txt、.bat、.csv”等文本文件格式存储,文件分隔符以“不跟字段值重复”为原则。文件编码格式需要与数据库设置的格式统一,防止出现中文乱码。

数据文件“test_3.csv”(COPY命令相对大数据文件效率更高,此处以示意为主)

1;zhangsan;语文;90
2;zhangsan;数学;95
3;zhangsan;英语;85

3、把一个表的数据拷贝到一个文件(示例)

1)将数据表导出到指定 TXT 文件中(默认分隔符是 tab)

COPY public.test_3 TO '/home/omm/mydata/test_3.txt';

2)将数据表导出到指定 TXT 文件中(文件指定分隔符为’;’)

COPY public.test_3 TO '/home/omm/mydata/test_3.txt' delimiter ';';

3)将查询结果集导出到指定 CSV 文件中(默认分隔符为’,’)

COPY (SELECT * FROM public.test_3 WHERE name='zhangsan') TO '/home/omm/mydata/test_3.txt' WITH CSV;

4从一个数据文件拷贝数据到一个表(示例)

测试数据复用上文的数据文件“test_3.csv”,将其导入到测试表“public.test_4”。

COPY public.test_4 FROM '/home/omm/mydata/test_3.csv' WITH CSV;

更多信息请参考官网:

COPY_云数据库 GaussDB_主备版_3.x版本_SQL参考_SQL语法_华为云

特别说明:数据的导入导出一定是在业务的需求下进行的,其中涉及到类似脱敏(加密)、数据覆盖与被覆盖、文件存储目录管理、数据量大小及数据导入导出效率等问题,本次不做说明,如有机会后续讲解。

四、常见数据导入导出的场景

数据导入导出常见的应用场景常见于数据库、数据仓库和大数据平台中。

1、数据库:

  • 数据迁移:当从一个数据库系统迁移到另一个数据库系统时,需要进行数据导入导出,确保数据的完整性和准确性。
  • 备份与恢复:为了防止数据丢失,定期备份数据库是必要的。导入导出功能可以用于备份和恢复操作。

2、数据仓库:

  • ETL(提取、转换、加载):在构建数据仓库时,通常需要从多个源提取数据,进行转换和清洗,然后加载到数据仓库中。这涉及到数据的导入导出。
  • 报表生成:数据仓库中的数据可以导出到报表中,以供分析和决策。

3、大数据平台:

  • 数据集成:在大数据平台中,可能需要从各种来源导入大量数据,然后再导出到其他系统或服务中。
  • 实时分析:某些场景下,需要实时地从大数据平台中导入数据,以便进行实时分析或处理。
  • 数据备份与恢复:与传统的数据库类似,大数据平台也需要定期备份数据,以确保数据的完整性和可用性。
  • 数据共享与分发:大数据平台的数据可以导出到其他系统或服务中,以实现数据的共享和分发。

这些场景都强调了数据导入导出的重要性,它们是确保数据流动、满足业务需求、支持决策和风险管理的基础设施。

五、小结

使用COPY命令可以方便地导入数据到GaussDB。只需确保源文件的格式与数据库表结构相匹配,并正确指定文件路径,即可轻松完成数据导入。此外,GaussDB还提供了其他数据导入工具和功能,如使用GDS导入数据、使用INSERT多行插入、使用gsql元命令导入数据、ETL工具集成等,以满足不同场景下的数据导入需求。

——结束

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

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

相关文章

计算机视觉中的神经网络可视化工具与项目

前言 本文介绍了一些关于神经网络可视化的项目,主要有CNN解释器,特征图、卷积核、类可视化的一些代码和项目,结构可视化工具,网络结构手动画图工具。 CNN解释器 这是一个中国博士发布的名叫CNN解释器的在线交互可视化工具。 主要…

Eureka服务端

一般我们Server端会像下图一样,引入Eureka,下面就通过这个来分析Eureka服务端源码流程 一、服务端配置 EnableEurekaServer会引入EurekaServerMarkerConfiguration类 EurekaSeverMarkerConfiguration最终会引入Marker对象,这就是一个标记…

Canal+RabbitMQ实现MySQL数据同步至ClickHouse

ClickHouse作为一个被广泛使用OLAP分析引擎,在执行分析查询时的速度优势很好的弥补了MySQL的不足,但是如何将MySQL数据同步到ClickHouse就成了用户面临的第一个问题。本文利用Canal来实现ClickHouse实时同步MySQL数据,使用RabbitMQ来做消息队…

c++语言基础16-出现频率最高的字母

题目描述 给定一个只包含小写字母的字符串,统计字符串中每个字母出现的频率,并找出出现频率最高的字母,如果最高频率的字母有多个,输出字典序靠前的那个字母。 输入描述 包含多组测试数据,每组测试数据占一行。 输…

在ARMv8中aarch64与aarch32切换

需求描述 在项目调试过程中,由于内存或磁盘空间不足需要将系统从aarch64切换到aarch32的运行状态去执行,接下来记录cortexA53的调试过程。 相关寄存器描述 ARM64: SPSR_EL3 N (Negative):表示运算结果的最高位,用于指示运算结果是否为负数。 Z (Zero):表示运算结果是否…

Spark Streaming的DStream与窗口操作

实时数据处理已经成为当今大数据时代的一个重要领域,而Spark Streaming是Apache Spark生态系统中的一个关键模块,用于处理实时数据流。本文将深入探讨Spark Streaming中的DStream(离散流)概念以及如何使用窗口操作来处理实时数据。…

如何将Docker中的Tomact彻底删除

目录 前言: 一.删除Tomcat容器 列出所有在运行的容器信息 ​编辑 如果tomcat容器正在运行先停止,可以通过容器id或者容器名称 再次查看容器运行情况,可以看到没有运行中的容器了. 查看所有容器(-a表示查看所有)无…

【数据结构】一些数组面试题以及顺序表的思考

简单不先于复杂,而是在复杂之后。 文章目录 1. 数组相关面试题2. 顺序表的问题及思考 1. 数组相关面试题 1.原地移除数组中所有的元素val,要求时间复杂度为O(N),空间复杂度为O(1)。 int removeElement(int* nums, int numsSize, int val) {i…

Ps:创建基于颜色的蒙版

有时候画面上的某种颜色显得不是很和谐,如下图所示。 将画面上的某种颜色换掉,也是得到创意效果的一种重要手段。 演示视频 如果能创建好相关颜色的蒙版,这样在替换颜色的时候就会更加方便。 ◆ ◆ ◆ 创建基于颜色的蒙版 主要思路&#xf…

8. C++ function的介绍和使用

std::function的介绍和使用 std::function是一个可变参类模板,是一个通用的函数包装器(Polymorphic function wrapper)。std::function的实例可以存储、复制和调用任何可复制构造的可调用目标,包括普通函数、成员函数、类对象&am…

系列七、Ribbon

一、Ribbon 1.1、概述 Ribbon是基于Netflix Ribbon实现的一套客户端负载均衡的工具,是Netflix发布的一款开源项目,其主要功能是提供客户端的软件负载均衡算法和服务调用,Ribbon客户端组件提供一系列完善的配置项,例如&#xff1a…

组合算法简单实现

组合算法 目录概述需求: 设计思路实现思路分析1.简单的字符串方式 参考资料和推荐阅读 Survive by day and develop by night. talk for import biz , show your perfect code,full busy,skip hardness,make a better result,wait for change,challenge …

网页爬虫对于网络安全有哪些影响?

在当今信息爆炸的时代,网络已经成为人们获取信息、交流思想和开展业务的重要平台。然而,随着网络的普及和技术的不断发展,网络安全问题也日益凸显,其中网页爬虫对网络安全的影响不容忽视。本文将就网页爬虫对网络安全的影响进行深…

XYZ世代

Z世代,Gen Zers,Generation Z ,一词最早出现于欧美地区,是美国及欧洲的流行用语,泛指在1995-2009年间出生的一代人,千禧后一代。又称网络世代、互联网世代,网生代,二次元世代&#x…

项目框架构建之3:Nuget服务器的搭建

本文是“项目框架构建”系列之3,本文介绍一下Nuget服务器的搭建,这是一项简单的工作,您或许早已会了。 1.打开vs2022创建Asp.net Web应用程序 框架选择.net framework4.8,因为nuget服务器只支持.net framework。 2.选择空项目和去…

multipath 内核接口及框架介绍

文章目录 1 云主机使用网络存储 io 流程2 multipath 介绍 1 云主机使用网络存储 io 流程 对于一个云服务环境,大致会有网络节点,存储节点,计算节点,控制节点,其中虚拟云主机在计算节点工作,而虚拟云主机&a…

Unity SVN更新提交小工具

Unity SVN更新提交小工具 前言使用说明必要前提源码参数说明 感谢 前言 Unity开发时每次都要到文件夹中操作SVN,做了一个小工具能够在Editor中直接操作。 使用说明 必要前提 前提是要安装好SVN,在文件夹右键能够看到安装的SVN 源码 using System…

UE4.27.2 网页串流

1、和Unity串流一样安装Node.js 下载地址https://nodejs.org/ 2、下载安装Epic Games启动程序https://www.unrealengine.com/zh-CN/download 3、安装UE4.7.2 4、这里就不安装像素流送演示,选个别的然后创建工程 5、启用PixelStreaming插件 6、设置额外启动参数&am…

uni-app 前后端调用实例 基于Springboot 详情页实现

锋哥原创的uni-app视频教程: 2023版uniapp从入门到上天视频教程(Java后端无废话版),火爆更新中..._哔哩哔哩_bilibili2023版uniapp从入门到上天视频教程(Java后端无废话版),火爆更新中...共计23条视频,包括:第1讲 uni…

OEE如何为制造企业实施ISO50001提供支持

ISO50001是一项旨在帮助企业建立和实施能源管理体系的国际标准,以提高能源效率、降低能源消耗和减少环境影响。而设备OEE(设备综合效率)作为一个关键的生产效率指标,可以为企业实施ISO50001提供重要的支持。本文将介绍ISO50001能源…