首页 > 数据库 >openGauss 使用gsql元命令导入数据

openGauss 使用gsql元命令导入数据

时间:2024-05-14 16:54:48浏览次数:22  
标签:gsql 字符 quote 导入 分隔符 格式 openGauss CSV

使用gsql元命令导入数据

gsql工具提供了元命令\copy进行数据导入。

\copy命令

\copy命令格式以及说明参见表 1 \copy元命令说明

表 1 \copy元命令说明

语法

说明

\copy { table [ ( column_list ) ] |

( query ) } { from | to } { filename |

stdin | stdout | pstdin | pstdout }

[ with ] [ binary ] [ delimiter

[ as ] 'character' ] [without escaping] [ null [ as ] 'string' ]

[ csv [ header ] [ quote [ as ]

'character' ] [ escape [ as ] 'character' ]

[ force quote column_list | * ] [ force

not null column_list ] ]

[compatible _illegal_chars]

在任何gsql客户端登录数据库成功后,可以使用该命令进行数据的导入/导出。但是与SQL的COPY命令不同,该命令读取/写入的文件是本地文件,而非数据库服务器端文件;所以,要操作的文件的可访问性、权限等,都是受限于本地用户的权限。

说明:

\COPY只适合小批量、格式良好的数据导入,不会对非法字符做预处理,也无容错能力,无法适用于含有异常数据的场景。导入数据应优先选择COPY。

参数说明

  • table

    表的名称(可以有模式修饰)。

    取值范围:已存在的表名。

  • column_list

    可选的待拷贝字段列表。

    取值范围:任意字段。如果没有声明字段列表,将使用所有字段。

  • query

    其结果将被拷贝。

    取值范围:一个必须用圆括弧包围的SELECT或VALUES命令。

  • filename

    文件的绝对路径。执行copy命令的用户必须有此路径的写权限。

  • stdin

    声明输入是来自标准输入。

  • stdout

    声明输出打印到标准输出。

  • pstdin

    声明输入是来自gsql的标准输入。

  • pstout

  • 声明输出打印到gsql的标准输出。

  • binary

    使用二进制格式存储和读取,而不是以文本的方式。在二进制模式下,不能声明DELIMITER,NULL,CSV选项。指定binary类型后,不能再通过option或copy_option指定CSV、FIXED、TEXT等类型。

  • delimiter [ as ] 'character'

    取值范围:支持多字符分隔符,但分隔符长度不能超过10个字节。

    默认值:

    • TEXT格式的默认分隔符是水平制表符(tab)。

    • CSV格式的默认分隔符为逗号字符“,”。

    • FIXED格式没有分隔符。

      说明:

      • 分隔符中不能包含\r或\n。
      • 分隔符不能和null参数相同。
      • CSV格式数据的分隔符不能和quote参数相同。
      • TEXT格式数据的分隔符不能包含如下字符中任意字符: \.abcdefghijklmnopqrstuvwxyz0123456789。
      • 数据文件中单行数据长度需<1GB,如果分隔符较长且数据列较多的情况下,会影响导出有效数据的长度。
      • 分隔符推荐使用多字符和不可见字符。多字符例如'$^&',设置方法为delimiter '$^&';不可见字符例如0x07,0x08,0x1b等,设置方法为 delimiter E'\x1b'。
  • null [ as ] 'string'

    用来指定数据文件中空值的表示。

    取值范围:支持指定多字符,最大为100个字符。

    默认值:

    • CSV格式下默认值是一个没有引号的空字符串。

    • 在TEXT格式下默认值是\N(包括'\\'和'N'两个字符)。

      说明:

      • null值不能包含\r或\n。
      • null值不能和分隔符、quote参数相同。
      • 在CSV格式下,COPY TO导出模式下,为避免数据混淆,当null值与字段内的取值相同时,会将字段数据用quote字符包裹,以作区分。
  • header

    指定导出数据文件是否包含标题行,标题行一般用来描述表中每个字段的信息。header只能用于CSV,FIXED格式的文件中。

    在导入数据时,如果header选项为on,则数据文本第一行会被识别为标题行,会忽略此行。如果header为off,而数据文件中第一行会被识别为数据。

    在导出数据时,如果header选项为on,则需要指定fileheader。fileheader是指定导出数据包含标题行的定义文件。如果header为off,则导出数据文件不包含标题行。

    取值范围:true/on,false/off。

    默认值:false

  • quote [ as ] 'character'

    CSV格式文件下的引号字符。

    默认值:""。

    说明:

    • quote参数不能和分隔符、null参数相同。
    • quote参数只能是单字节的字符。
    • 推荐不可见字符作为quote,例如0x07,0x08,0x1b等。
  • escape [ as ] 'character'

    CSV格式下,用来指定逃逸字符,逃逸字符后的字符会被当作字段内容处理。逃逸字符只能指定为单字节字符。

    默认值:双引号。当与quote值相同时,会被替换为'\0'。

  • force quote column_list | *

    在CSV COPY TO模式下,强制在每个声明的字段周围对所有非NULL值都使用引号包围。NULL输出不会被引号包围。

    取值范围:已存在的字段。

  • force not null column_list

    在CSV COPY FROM模式下,指定的字段输入不能为空。

    取值范围:已存在的字段。

  • force null column_list

    在CSV COPY FROM模式下,指定的字段输入表示空值的字符串设为空。

    取值范围:已存在的字段。

  • without escaping

    在TEXT格式中,不对'\'和后面的字符进行转义。

    取值范围:仅支持TEXT格式。

  • compatible _illegal_chars

    导入非法字符容错参数。此语法仅对COPY FROM导入有效。

    取值范围:true/on,false/off。

    • 参数为true/on,则导入时遇到非法字符进行容错处理,非法字符转换后入库,不报错,不中断导入。
    • 参数为false/off,导入时遇到非法字符进行报错,中断导入。

    缺省值:false/off

    说明:

    导入非法字符容错规则如下:

    (1)对于'\0',容错后转换为空格;

    (2)对于其他非法字符,容错后转换为问号;

    (3)若compatible_illegal_chars为true/on标识导入时对于非法字符进行容错处理,则若NULL、DELIMITER、QUOTE、ESCAPE设置为空格或问号则会通过如"illegal chars conversion may confuse COPY escape 0x20"等报错信息提示用户修改可能引起混淆的参数以避免导入错误。

任务示例

  1. 创建目标表a。

    openGauss=# CREATE TABLE a(a int);
    
  2. 导入数据。

    1. 从stdin拷贝数据到目标表a。

      openGauss=# \copy a from stdin;
      

      出现>>符号提示时,输入数据,输入\.时结束。

      Enter data to be copied followed by a newline.
      End with a backslash and a period on a line by itself.
      >> 1
      >> 2
      >> \.
      

      查询导入目标表a的数据。

      openGauss=# SELECT * FROM a;
       a 
      ---
       1
       2
      (2 rows)
      
    2. 从本地文件拷贝数据到目标表a。假设存在本地文件/home/omm/2.csv。

      • 分隔符为‘,’。
      • 在导入过程中,若数据源文件比外表定义的列数多,则忽略行尾多出来的列。
      openGauss=# \copy a FROM '/home/omm/2.csv' WITH (delimiter',',IGNORE_EXTRA_DATA 'on');
      

详情查看:https://opengauss.org

详情查看:https://docs-opengauss.osinfra.cn

标签:gsql,字符,quote,导入,分隔符,格式,openGauss,CSV
From: https://www.cnblogs.com/techbing/p/18191630

相关文章

  • openGauss 使用合并方式更新和插入数据
    使用合并方式更新和插入数据在用户需要将一个表中所有的数据或大量的数据添加至现有表的场景下,openGauss提供了MERGEINTO语句通过两个表合并的方式高效地将新数据添加到现有表。MERGEINTO语句将目标表和源表中数据针对关联条件进行匹配,若关联条件匹配时对目标表进行UPDATE,关联......
  • openGauss 示例1-通过本地文件导入导出数据
    示例1:通过本地文件导入导出数据在使用JAVA语言基于openGauss进行二次开发时,可以使用CopyManager接口,通过流方式,将数据库中的数据导出到本地文件或者将本地文件导入数据库中,文件格式支持CSV、TEXT等格式。样例程序如下,执行时需要加载openGauss的JDBC驱动。importjava.sql.Conne......
  • openGauss 使用逻辑复制工具复制数据
    使用逻辑复制工具复制数据目前支持openGauss逻辑复制的工具有SDR和DRS。复制工具从openGauss抽取逻辑日志后到对端数据库回放。对于使用JDBC连接数据库的复制工具,具体代码请参考示例:逻辑复制代码示例。详情查看:https://opengauss.org详情查看:https://docs-opengauss.osinfra.cn......
  • openGauss 逻辑解码概述
    逻辑解码概述功能描述openGauss对数据复制能力的支持情况为:支持通过数据迁移工具定期向异构数据库(如Oracle等)进行数据同步,不具备实时数据复制能力。不足以支撑与异构数据库间并网运行实时数据同步的诉求。openGauss提供了逻辑解码功能,通过反解xlog的方式生成逻辑日志。目标数......
  • openGauss 逻辑复制支持DDL操作
    逻辑复制支持DDL操作功能描述Vastbase在逻辑复制过程中支持如下DDL操作:CREATE/DROPTABLE|TABLEPARTITIONCREATE/DROPINDEX注意事项只支持行存表的DDL操作。不支持列存,ustore存储引擎。在订阅端手动删除表会导致DDL同步失败,发布订阅阻塞。不支持在对表进行相......
  • openGauss 慢SQL诊断
    慢SQL诊断背景信息在SQL语句执行性能不符合预期时,可以查看SQL语句执行信息,便于事后分析SQL语句执行时的行为,从而诊断SQL语句执行出现的相关问题。前提条件数据库实例运行正常。查询SQL语句信息,需要正确设置GUC参数track_stmt_stat_level。只能用系统管理员和监控管理员权限......
  • 离线安装docker,并导入镜像文件
    在Ubuntu20.04系统上离线安装Docker,并导入Redis镜像,需要分几个步骤进行。以下是详细的步骤:1.离线下载Docker安装包首先,你需要在有网络连接的机器上下载Docker的.deb安装包以及其依赖项。下载Docker.deb包和依赖项在联网的机器上:创建一个目录来存放所有的.deb文件:mkdi......
  • JDBC连接openGauss6.0和PostgreSQL16.2性能对比
    本文分享自华为云社区《JDBC连接openGauss6.0和PostgreSQL16.2性能对比》,作者:Gauss松鼠会小助手。PostgreSQLvsopenGauss01前置准备安装JDK:详细安装步骤请问度娘,输入能正常返回即已安装[root@db06~]#java-versionopenjdkversion"1.8.0_262"OpenJDKRuntimeEnvir......
  • HydroOJ 从入门到入土(19)导入题解和标程、题目数据统计(>=4.12.0)
    题解和std可以导入了,导出还会远吗?目录一、导入题解和标程1.目录结构2.测试结果3.第二次测试题目结构如下:测试结果:4.总结:关于题解:关于标程(std):去除.DS_Store的解决方法二、题目数据统计1.范围2.筛选选项3.无关紧要的小bug一、导入题解和标程新版本更新了这个功能,方......
  • openGauss 开启RemoveIPC引起的core问题
    开启RemoveIPC引起的core问题问题现象操作系统配置中RemoveIPC参数设置为yes,数据库运行过程中出现宕机,并显示如下日志消息。FATAL:semctl(1463124609,3,SETVAL,0)failed:Invalidargument原因分析当RemoveIPC参数设置为yes时,操作系统会在对应用户退出时删除IPC资源(共......