数据导出
操作场景
在数据库迁移或者数据备份时,需要进行数据导入导出,zsql支持使用“DUMP”命令导出数据。
注意事项
- DUMP使用-h、-u或者help参数以“;”或者“/”结束,可以显示DUMP命令的使用帮助。
- DUMP使用-o或者option参数以“;”或者“/”结束,显示最近一次的配置项。
- 当前DUMP导出实现是在客户端组装SQL发给服务端,因此服务端看到的是具体的DDL、DML语句。
- 服务端审计日志{GSDB_DATA}/log/audit中记录具体的DDL和DML语句,不会记录DUMP语句。
- 不要将导出文件名设置为系统文件或配置文件,否则会有被覆盖或被清理的风险。
语法格式
DUMP { TABLE table_name | QUERY "select_query " } INTO FILE 'file_name ' [ FILE SIZE 'uint64_file_size' ] [ { FIELDS | COLUMNS } ENCLOSED BY 'ascii_char' [ OPTIONALLY ] ] [ { FIELDS | COLUMNS } TERMINATED BY 'string '] [ { LINES | ROWS } TERMINATED BY 'string '] [ CHARSET 'string' ];
参数说明
- table_name
需要导出的表名。
- select_query
需要导出的行,这些行是使用SELECT子句指定返回的结果。
- file_name
导出的文件名。
- uint64_file_size
指定导出文件的大小,超过指定的大小后创建新的文件,默认值:0M,表示不拆分。
- FIELDS
指定每一列的格式。
- COLUMNS
FIELDS的同义词。
- ENCLOSED BY
指定列的包含符号。
- ascii_char
每一列的包含符号, 例如"ABC",这里双引号是包含符,默认不指定包含符。
取值范围:单个ASCII字符, 或者空字符串('',表示不指定包含符)。
- 10进制ASCII字符取值范围为0~127。
- 16进制ASCII字符取值范围为\x00~\x7F。
- 常见转义字符请参见表1。
- OPTIONALLY
仅对字符串和二进制类型增加符号,默认没有包含符。
- TERMINATED BY
指定列的分隔字符串。
- string
列分隔符,默认为“,”。
取值范围:单个ASCII字符。
- 10进制ASCII字符取值范围为0~127。
- 16进制ASCII字符取值范围为\x00~\x7F。
- 常见转义字符请参见表1。
- LINES
一条记录有多行,则可以使用LINES来指定行的结束符。
- ROWS
LINES的同义词。
string
行尾结束符,默认为\n。
取值范围:单个ASCII字符。
- 10进制ASCII字符取值范围为0~127。
- 16进制ASCII字符取值范围为\x00~\x7F。
- 常见转义字符请参见表1。
- CHARSET
指定导出数据的字符集。
string
当前仅支持UTF8无BOM字符集(CHARSET = UTF8)和GBK字符集(CHARSET = GBK),默认UTF8无BOM字符集。
- row_terminated_char
行尾结束符,默认为\n。
取值范围:单个ASCII字符。
- 10进制ASCII字符取值范围为0~127。
- 16进制ASCII字符取值范围为\x00~\x7F。
- 常见转义字符请参见表1。
表1 常见转义字符表 转义字符
意义
ASCII码值(十进制)
16进制值
\a
响铃(BEL)
007
\x07
\f
换页(FF),将当前位置移到下页开头
012
\x0C
\n
换行(LF) ,将当前位置移到下一行开头
010
\x0A
\r
回车(CR) ,将当前位置移到本行开头
013
\x0D
\t
水平制表(HT) (跳到下一个TAB位置)
009
\x09
\v
垂直制表(VT)
011
\x0B
\\
代表一个反斜线字符''\'
092
\x5C
'' (两个单引号)
代表一个单引号(撇号)字符
039
\x27
\"
代表一个双引号字符
034
\x22
\?
代表一个问号
063
\x3F
\0
空字符(NULL)
000
\x00
\ooo
1到3位八进制数所代表的任意字符
三位八进制
-
\xhh
1到2位十六进制所代表的任意字符
二位十六进制
-
说明:由于单引号是SQL的转义符,在指定单引号作为分隔符号时,需要指定两个单引号作为分隔符。例如,
.... enclosed by ''''....
算上符号包含符, 共计4个包含符。
数据导出的转义符:当字段内容中遇到指定的包裹符的时候,用包裹符再转义一次,例如字段内容是1"1导出内容为 "1""1"
示例
- 导出数据库中已存在的表places,并增加“|”符号。
DUMP TABLE places INTO FILE '/gaussdb/backup/places_backup ' FIELDS ENCLOSED BY '|';
23 rows dumped.
- 导出表places中STATED_ID为US的行,为每一行以单引号包含,并在行尾添加“|”分隔符。
DUMP QUERY "SELECT STREET_ADDRESS,CITY FROM places WHERE STATED_ID = 'US'" INTO FILE '/gaussdb/backup/places_backup ' COLUMNS ENCLOSED BY '''' COLUMNS TERMINATED BY '|';
4 rows dumped.
导出的文件内容为:
'2014 Jabberwocky Rd'|'Southlake' '2011 Interiors Blvd'|'South San Francisco' '2007 Zagora St'|'South Brunswick' '2004 Charade Rd'|'Seattle'
- 显示使用方法。
dump -h;
dump -u;
dump help;
- 显示DUMP当前配置项。
dump -o;
dump option;
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」关注作者【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。评论