openGauss学习笔记-167 openGauss 数据库运维-备份与恢复-导入数据-使用gsql元命令导入数据

文章目录

    • [openGauss学习笔记-167 openGauss 数据库运维-备份与恢复-导入数据-使用gsql元命令导入数据](#openGauss学习笔记-167 openGauss 数据库运维-备份与恢复-导入数据-使用gsql元命令导入数据)
      • [167.1 \copy命令](#167.1 \copy命令)
      • [167.2 参数说明](#167.2 参数说明)
      • [167.3 任务示例](#167.3 任务示例)

openGauss学习笔记-167 openGauss 数据库运维-备份与恢复-导入数据-使用gsql元命令导入数据

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

167.1 \copy命令

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

表 1 \copy元命令说明

语法 说明
\copy { table [ ( column_list ) ] |( query ) } { from | to } { filename |stdin | stdout | pstdin | pstdout }[ with ] [ binary ] [ delimiter[ as ] 'character' ] [ null [ as ] 'string' ][ csv [ header ] [ quote [ as ]'character' ] [ escape [ as ] 'character' ][ force quote column_list | * ] [ forcenot null column_list ] ] 在任何gsql客户端登录数据库成功后,可以使用该命令进行数据的导入/导出。但是与SQL的COPY命令不同,该命令读取/写入的文件是本地文件,而非数据库服务器端文件;所以,要操作的文件的可访问性、权限等,都是受限于本地用户的权限。说明:\COPY只适合小批量、格式良好的数据导入,不会对非法字符做预处理,也无容错能力,无法适用于含有异常数据的场景。导入数据应优先选择COPY。

167.2 参数说明

  • 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'

    指定数据文件行数据的字段分隔符。

    说明:

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

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

    默认值:

    • TEXT格式的默认分隔符是水平制表符(tab)。
    • CSV格式的默认分隔符为","。
    • FIXED格式没有分隔符。
  • null [ as ] 'string'

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

    取值范围:

    • null值不能是\r和\n,最大为100个字符。
    • null值不能和分隔符、quote参数相同。

    默认值:

    • CSV格式下默认值是一个没有引号的空字符串。
    • 在TEXT格式下默认值是\N。
  • 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模式下,指定的字段输入表示空值的字符串设为空。

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

167.3 任务示例

  1. 创建目标表a。

    css 复制代码
    CREATE TABLE a(a int);
  2. 导入数据。

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

    css 复制代码
    \copy a from stdin;

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

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

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

    yaml 复制代码
    openGauss=# SELECT * FROM a;
     a 
    ---
     1
     2
    (2 rows)

    从本地文件拷贝数据到目标表a。假设存在本地文件/home/omm/2.csv。

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

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

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

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

相关推荐
TDengine (老段)12 分钟前
TDengine 时间函数 TODAY() 用户手册
大数据·数据库·物联网·oracle·时序数据库·tdengine·涛思数据
码界奇点21 分钟前
KingbaseES一体化架构与多层防护体系如何保障企业级数据库的持续稳定与弹性扩展
数据库·架构·可用性测试
悟乙己43 分钟前
数据科学家如何更好地展示自己的能力
大数据·数据库·数据科学家
皆过客,揽星河1 小时前
mysql进阶语法(视图)
数据库·sql·mysql·mysql基础语法·mysql进阶语法·视图创建修改删除
tuokuac2 小时前
Redis 的相关文件作用
数据库·redis·缓存
鹧鸪云光伏与储能软件开发3 小时前
投资储能项目能赚多少钱?小程序帮你测算
运维·数据库·小程序·光伏·光伏设计软件·光伏设计
2301_779503764 小时前
MySQL主从同步--主从复制进阶
数据库·mysql
beijingliushao4 小时前
58-正则表达式
数据库·python·mysql·正则表达式
诗句藏于尽头5 小时前
DJANGO后端服务启动报错及解决
数据库·笔记·django
手握风云-5 小时前
MySQL数据库精研之旅第十五期:索引的 “潜规则”(下)
数据库