暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

华为GaussDB T 数据导入

墨天轮 2019-09-28
1126

数据导入

操作场景

在数据库迁移或者数据备份时,需要进行数据导入导出,zsql支持使用“LOAD”命令导入数据。

注意事项

  • 导入数据的新表必须与备份文件的字段数量一致,且满足导入文件字段的数据类型。
  • GaussDB 100支持纯文本文件导入。
  • LOAD使用-h、-u或者help参数以“;”或者“/”结束,可以显示LOAD命令的使用帮助。
  • LOAD使用-o或者option参数以“;”或者“/”结束,显示最近一次的配置项。
  • 当前LOAD导入实现是在客户端组装SQL发给服务端,因此服务端看到的是具体的DDL、DML语句。
  • 服务端审计日志{GSDB_DATA}/log/audit中记录具体的DDL和DML语句,不会记录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

    此选项会将工具运行过程中的调试信息打印到屏幕上。

表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_backup导入到表places_new中。

--在目录/gaussdb/backup下创建文件places_backup,内容如下: |1|,|address_aa|,|0001|,|xian|,|shanxi|,|01| |2|,|address_bb|,|0002|,|hangzhou|,|zhejiang|,|02| |3|,|address_cc|,|0003|,|chengdu|,|sichuan|,|03| |4|,|address_dd|,|0004|,|shenzhen|,|guangdong|,|04|
--创建表places_new CREATE TABLE places_new( place_id number(4,0) not null, STREET_ADDRESS VARCHAR(40), POSTAL_CODE VARCHAR(12), CITY VARCHAR(64), STATE_PROVINCE VARCHAR(25), STATE_ID CHAR(2) )distribute by hash(place_id);
--将places_backup导入表places_new中。 LOAD DATA INFILE "/gaussdb/backup/places_backup" INTO TABLE places_new FIELDS ENCLOSED BY '|' ;
Complete the data load. 4 rows are totally read. 0 rows are ignored. 4 rows are loaded into table. 4 rows are committed into table.
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论