openGauss学习笔记-167 openGauss 数据库运维-备份与恢复-导入数据-使用gsql元命令导入数据167.1 copy命令167.2 参数说明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' ] [ quote [ as ]'character' ] [ escape [ as ] 'character' ] [ 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。
-
数据文件中单行数据长度需>符号提示时,输入数据,输入.时结束。
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)从本地文件拷贝数据到目标表a。假设存在本地文件/home/omm/2.csv。
-
分隔符为“,”。
-
在导入过程中,若数据源文件比外表定义的列数多,则忽略行尾多出来的列。
copy a FROM '/home/omm/2.csv' WITH (delimiter',',IGNORE_EXTRA_DATA 'on');
-
👍 点赞,你的认可是我创作的动力!
⭐️ 收藏,你的青睐是我努力的方向!
✏️ 评论,你的意见是我进步的财富!
-