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 queryTO { '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工具集成等,以满足不同场景下的数据导入需求。

——结束

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

kbdnecnt.DLL文件缺失,软件或游戏无法启动运行,怎样快速修复?

不少人都在问“kbdnecnt.DLL文件”是什么?为什么电脑总是报错提示说“kbdnecnt.DLL文件缺失,软件无法启动”? 首先,先来了解“kbdnecnt.DLL文件”是什么? kbdnecnt.DLL是Windows操作系统中的一个动态链接库文件&#…

Spark二、Spark技术栈之Spark Core

Spark Core spark核心:包括RDD、RDD算子、RDD的持久化/缓存、累加器和广播变量 学习链接:https://mp.weixin.qq.com/s/caCk3mM5iXy0FaXCLkDwYQ 一、 RDD 1.1 为什么要有RDD 在许多迭代式算法(比如机器学习、图算法等)和交互式数据挖掘中,…

STL——string详解

目录 💡介绍 💡string的基本操作 💡string的构造函数 💡string赋值操作 💡string字符串拼接 💡string的查找和替换 💡string字符串比较 💡string字符存取 💡str…

alibabaCloud学习笔记01(小滴课堂)

微服务架构常见的核心组件 讲解业务微服务架构常见解决方案 讲解AlibabaCloud核心组件介绍 创建数据库。 建表: 添加数据: 再建个用户库: 建表: 插入数据: 创建订单库: 建表: 创建项目&#x…

大数据时代的WEB运维高级架构师,Web系统运维工程师的实战成长之路

一、教程描述 本套WEB架构师教程,大小30.61G,共有183个文件。 二、教程目录 01-Web架构之单机时代(共7课时) 02-Web架构之集群时代(共9课时) 03-Web架构之DNS(共6课时) 04-Web…

常见的共轭先验分布

经常会遇到后验分布不能求解的问题,对于这个问题可以应用共轭先验分布解决,这些先验分布具有比较好的特征,能够使得出的后验分布和先验分布具有相同的分布族。如果一个具有参数属于分布的先验分布,则生成的后验分布也属于相同的分…

【InnoDB数据存储结构】第2章节:InnoDB行格式

目录结构 之前整篇文章太长,阅读体验不好,将其拆分为几个子篇章。 本篇章讲解 InnoDB 行格式。 InnoDB 行格式 InnoDB 一行记录是如何存储的? 这个问题是本文的重点,也是面试中经常问到的问题,所以就引出了下文的 …

【flink番外篇】9、Flink Table API 支持的操作示例(14)- 时态表的join(java版本)

Flink 系列文章 一、Flink 专栏 Flink 专栏系统介绍某一知识点,并辅以具体的示例进行说明。 1、Flink 部署系列 本部分介绍Flink的部署、配置相关基础内容。 2、Flink基础系列 本部分介绍Flink 的基础部分,比如术语、架构、编程模型、编程指南、基本的…

Unity 基于UDP实现本地时间与网络时间校验 防客户端修改日期作弊

新建一个Unity GameObject 挂上NTPComponent脚本 时间校验 源码 using System.Collections; using System.Collections.Generic; using UnityEngine; using System; using UnityEngine.Networking; using System.Text; using System.Net.Sockets; using System.Net; using Sys…

c# OpenCvSharp Cv2.Threshold()和Cv2.AdaptiveThreshold参数说明

一、 Cv2.Threshold()二值化的函数参数说明 Cv2.Threshold()是一个用于图像二值化的函数。具体来说,它会将图像中的每一个像素的灰度值与一个阈值进行比较,大于该阈值的像素会被赋值为最大灰度值(即 255),小于该阈值的像素会被赋值为最小灰度…

Apollo感知模块 :传感器| 目标监测| 障碍物识别 | 模型管理

🎬 鸽芷咕:个人主页 🔥 个人专栏:《linux深造日志》《粉丝福利》 ⛺️生活的理想,就是为了理想的生活! ⛳️ 粉丝福利活动 ✅参与方式:通过连接报名观看课程,即可免费获取精美周边 ⛳️活动链接&#xf…

用c语言以升序顺序显示15个单词,从键盘上输入15个单词,将其以升序顺序显示出来。(排序方法不限,单词不得雷同,而且单词须是正确的单词)

用c语言以升序顺序显示15个单词,从键盘上输入15个单词,将其以升序顺序显示出来。(排序方法不限,单词不得雷同,而且单词须是正确的单词) 以下是一个使用C语言实现的示例程序,可以从键盘上输入15个单词,并将它…

简易机器学习笔记(八)关于经典的图像分类问题-常见经典神经网络LeNet

前言 图像分类是根据图像的语义信息对不同类别图像进行区分,是计算机视觉的核心,是物体检测、图像分割、物体跟踪、行为分析、人脸识别等其他高层次视觉任务的基础。图像分类在许多领域都有着广泛的应用,如:安防领域的人脸识别和…

视频号频繁显眼!是资本的运作?还是互联网新风口到来?

视频号这个平台出现了,特别是在最近存在感越来越强,而且已经有些人开始在视频号当中购物了,这也就意味着,视频号电商出现了,腾讯也开始搞电商了。 很多人可能对视频号做电商这个事情呢,抱有一定的迟疑态度&…

【算法】数论---约数

约数里面的一个重要性质&#xff1a;一个数的约数都是成对存在的(以sqrt(x)为分界线) 一、求一个数的所有约数---试除法 int x; cin>>x; int yue[10000]{0},idx0; for(int i1;i<x/i;i) {if(x%i0){yue[idx]i;cout<<i<<" ";} }for(int iidx-1;i&…

深度学习:大规模模型分布式训练框架DeepSpeed

深度学习&#xff1a;大规模模型分布式训练框架DeepSpeed DeepSpeed简介DeepSpeed核心特点DeepSpeed如何工作&#xff1f;DeepSpeed如何使用&#xff1f;参考文献 DeepSpeed简介 随着机器学习模型变得越来越复杂和庞大&#xff0c;训练这些模型所需的计算资源也在不断增加。特别…

九州金榜|家庭教育小妙招如何培养孩子学习习惯

做小学老师的时候&#xff0c;很多家长都问过我同一个问题&#xff0c;孩子成绩差&#xff0c;如何提高孩子的成绩&#xff1f; 好像成绩是我们的家长判断孩子是否优秀的唯一标准&#xff0c;一切都是围绕着成绩说话&#xff0c;考好了表扬、鼓励&#xff0c;考不好就会被批评…

【UE5.1】给森林添加天气效果

在上一篇博客&#xff08;【UE5.1】程序化生成Nanite植被&#xff09;基础上给森林添加天气交互效果&#xff0c;角色和雪地、水坑的交互效果。 目录 效果 步骤 一、准备工作 二、添加超动态天空 2.1 修改时间 2.2 昼夜交替 三、添加超动态天气 3.1 改变天气 3.2 …

uniCloud 云数据库(新建表、增、删、改、查)

新建表结构描述文件 todo 为自定义的表名 表结构描述文件的默认后缀为 .schema.json 设置表的操作权限 uniCloud-aliyun/database/todo.schema.json 默认的操作权限都是 false "permission": {"read": false,"create": false,"update&quo…

html中的form表单以及相关控件input、文本域、下拉select等等的详细解释 ,点赞加关注持续更新~

文章目录 表单创建表单forminput 标签input标签的value属性设置input标签格式单选框多选框上传文件下拉菜单文本域设置文本域格式label 标签按钮 表单 作用&#xff1a;收集用户信息。 使用场景&#xff1a; 登录页面注册页面搜索区域 创建表单form <form action".…