DUMP
在数据库迁移或者数据备份时,需要进行数据导入导出,GaussDB 100支持使用“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。
数据导出
前提条件
确保磁盘空间足够。
确保CPU资源足够。
操作步骤
以DBA身份登录GaussDB 100数据库。
zsqlconn gaussdba/gaussdb_123@192.168.0.1:1888
gaussdba/gaussdb_123为安装后创建的系统管理员和修改后的密码,192.168.0.1为数据库所在的服务器IP地址,1888为连接的端口号。
执行导出命令。
导出表training。
DUMP TABLE training INTO FILE '/home/gaussdba/data/training_backup' ;
导出表training中指定的行(SELECT返回的结果)。
DUMP QUERY "SELECT course_name,score,exam_date FROM training WHERE course_name = 'SQL majorization'" INTO FILE '/home/gaussdba/data/training_query_backup ' COLUMNS ENCLOSED BY '''' COLUMNS TERMINATED BY '|';
LOAD
功能描述
在数据库迁移或者数据备份时,需要进行数据导入导出,GaussDB 100支持使用“LOAD”命令导入数据。
语法格式
LOAD DATA INFILE ""file_name"" INTO TABLE table_name
[ REPLACE | IGNORE ]
[{ FIELDS | COLUMNS } ENCLOSED BY 'ascii_char' [ OPTIONALLY ]]
[{ FIELDS | COLUMNS } TERMINATED BY 'string']
[{ LINES | ROWS } TERMINATED BY 'string']
[ TRAILING COLUMNS( COLUMN1[ , COLUMN2, ... ] ) ]
[ IGNORE uint64_num { LINES | ROWS }]
[ CHARSET string ]
[ THREADS uint32_threads ]
[ ERRORS uint32_num ]
[ NOLOGGING ]
[ NULL2SPACE ]
[ DEBUG ]
[ SET col_name = expr,... ];
参数说明
file_name
被导入的文件路径和文件名。
table_name
导入的表名。
REPLACE
指定REPLACE时,新行将代替有相同唯一键值的现有行。
IGNORE
指定IGNORE时,导入数据时跳过与现有行唯一键值重复的输入行。
FIELDS
指定每一列的格式。
COLUMNS
FIELDS的同义词。
ENCLOSED BY
指定列的包含符号。
ascii_char
每一列的包含符号,默认不设定包含符。
取值范围:单个ASCII字符,或者空字符串('',表示不设定包含符)。
10进制ASCII字符取值范围为0~127。
16进制ASCII字符取值范围为\x00~\x7F。
常见转义字符请参见表1。
OPTIONALLY
仅对字符串和二进制类型增加符号,默认为单引号。
TERMINATED BY
指定列的分隔字符串。
string
列分隔字符串,默认为“,”。
取值范围:单个或多个ASCII字符,该字符串长度不能超过10。
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。
TRAILING COLUMNS( column_name[ , ... ] )
指定列名导入数据,其中column_name为列名,至少指定一个列名。
SET col_name = expr, ...
SET子句用于提供不是来源于输入文件的值,必须位于LOAD命令的末尾处。
其中col_name表示列名,expr为表达式,表达式中可对列名字段进行运算,并且只能含有位于赋值操作符左侧的列名称。set子句中需要至少指定一列及对应表达式。
SET子句设置的列不能重复,不能是“TRAILING COLUMNS”子句中指定的列。
IGNORE uint64_num
指定忽略的行数,uint64_num表示忽略前uint64_num行,默认值为0。
CHARSET
指定**数据的字符集。
string
当前仅支持UTF8无BOM字符集(CHARSET = UTF8)和GBK字符集(CHARSET = GBK),默认UTF8无BOM字符集。
THREADS
指定并行导入的线程数。
uint32_threads
表示并行导入的线程数,默认值1,多线程并发是为了提高效率,允许错误条数统计有误差,同时会记录详细错误行号信息,不影响后续的导入。
取值范围:[1, 128]。
ERRORS
指定允许出错的sql语句数。
uint32_num
表示允许出错的sql语句数,默认为0。
NOLOGGING
表示**数据不记录redo日志和undo日志。必须将目标表设置为append only,才能使用此选项。
NULL2SPACE
若导入的列数据为空,其类型为CHAR、LOB等字符型并且要求NOT NULL时,将**一个空格字符代替NULL。
DEBUG
此选项会将工具运行过程中的调试信息打印到屏幕上。
转义字符
意义
ASCII码值(十进制)
数据导入
前提条件
确保磁盘空间足够。
确保CPU资源足够。
操作步骤
以DBA身份登录GaussDB 100数据库。
zsqlconn gaussdba/gaussdb_123@192.168.0.1:1888
gaussdba/gaussdb_123为安装后创建的系统管理员和修改后的密码,192.168.0.1为数据库所在的服务器IP地址,1888为连接的端口号。
执行导入命令。
数据文件training_backup导入到表training_new中。
LOAD DATA INFILE ""/home/gaussdba/data/training_backup"" INTO TABLE training_new FIELDS ENCLOSED BY '|';
数据文件training_backup导入到表training_new的指定列course_name中。
LOAD DATA INFILE ""/home/gaussdba/data/training_backup"" INTO TABLE training_new TRAILING COLUMNS(course_name);