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

GoldenDB技术文章—命令行介绍

乐呵呵 2024-06-29
611

数据目录介绍

1) 该数据目录一般位于用户主目录下的 loaddata (具体依赖配置文件 loadserver.ini),主要用来存放LoadServer 工作工程中产生的数据文件。

2) 主要结构目录如下:

● backup目录:导入任务结束,导入数据文件保存目录,是否保存文件依赖配置文件选项。

● data目录:导入导出loadserver本地缓存表目录。

● in目录:导入数据文件存放目录,该目录中子目录名称为集群号,第一次使用需创建,并且需要将数据文件移到至该目录中。如果使用计算节点通道进行数据导入,那么无需创建名为集群号的目录,直接将导入文件放入in目录下即可。

● insql:导入过程中,失败转SQL存放数据的目录。

● out目录:导出数据文件存放目录。

● errordata目录:导入失败中间数据文件存放目录。

● split/merge目录:导入/导出临时数据文件存放目录。

!

说明

数据导入使用计算节点通道仅使用 split 目录。

使用命令介绍

dbtool命令选项介绍

数据导入导出命令由 LoadServer 服务器所在用户的dbtool 客户端发起。命令介绍如下:

Usage: dbtool -loadserver [OPTION]

其中OPTION:

选项名称dbtool -h content注释

-l[ink]s[tate]

show ModuleName link info

查看模块链路信息

-l[oad-]c[onfig]

dynamic reload config

动态生效配置参数

-l[oad-]l[icense]

dynamic reload license

dynamic reload license 动态加载license

-V

print middle working message of LoadServer

显示详细步骤

-type

in/out

命令类型:in-导入;out-导出

-load-retry

load retry

导入重试

-convert-to-insert-retry

convert load in failure file to SQL file

导入失败文件转sql文件

-skip-ok-check

it doesn't work, just for keep the interface compatible

不起实际作用,仅保持业务接口兼容

-clusterid

cluster id

导入导出功能所在集群号

-errorignore

the max error data numbers we can ignore when import data

导入过程容忍最大错误数据条数,超过该值,导入任务失败

-backup

backup loadin datafile to the backup directory

备份导入文件到备份目录

-endstate

Loadout : finally state when export a table, value: -1: use the value in the config file, 0: uploaded and merge, 1: uploaded, 2: saved on DN Loadin:

结束阶段标志:

导出:

0-导出文件在out目录,并合并为一个文件

1-导出文件在out目录,不合并

2-导出文件存放在DBAgent端,在DBAgent端生成文件名规则:g{groupid}_{导出文件名}_{lds ip十六进制}_{lds 端口十六进制},因此当不同库有相同表时,文件会覆盖。

导入:

不填时默认导入全流程

split-导入在拆分阶段后停止

-splitpath


导入在拆分阶段停止时指定拆分文件路径

-sql

SQL Command

SQL命令

-host

host ip(or domain name) and port

LoadServer服务器所在IP(域名)及端口

-loadin-support-null

whether loadserver support ",," as NULL value; 0:not support 1: support

是否支持0长度字符串为NULL,0为不支持,1为支持

-set-unique-column=

assign the unique column when do a loadin job, attention: when this option occurs, you should list all the loadin columns in the -sql option except this one

导入时指定文件内唯一列,注意:当使用该option时,需要列出除指定文件内唯一列之外的所有导入列

-user=

load data check authentication

集群鉴权用户名

-password=

load data check authentication

集群鉴权密码

-q[uery] -w[ork]l[oad]

query loadserver's workload

查询导入导出工作负载情况

-tablename

load retry table name or table name for convert to SQL file

重试命令中指定的表名或者导入失败文件转sql文件命令中指定的表名

-importdate=

load retry date[YYYY-MM-DD] or date[YYYY-MM-DD] for convert to SQL file

重试命令指定重试数据日期或者导入失败文件转sql文件命令中指定的数据日期

-importdir=

Load in fail directory for convert to SQL file

导入失败文件转sql文件命令中指定的失败文件目录

-exportdir=

SQL file directory

导入失败文件转sql文件命令中指定的sql文件目录

-batchcommit=

how many lines in a batch do we commit when make a ConvertSQL operation;0:all SQL in a batch, default:5000

导入失败文件转sql文件时一次提交行数,0:一次提交所有行,默认5000行

-linkoffrebuild

link can be rebuilded with this parameter if linkoff happened

Loadserver与Comtool断链重连参数

-filenum=

specify the number of loadout files

Endstate=3时,指定导出文件数目

-fileline=

specify the number of lines per loadout file

Endstate=3时,指定导出文件最大行数

-db-conn-info=

for load in, cluster service information

集群服务信息

批量脚本命令选项介绍

批量导入导出命令由 LoadServer 服务器所在用户的batchload.py脚本发起。命令介绍如下:

Usage:切换到loadserver所在用户下,python bin/batchload.py [OPTION]

其中OPTION:

选项名称Python batchload.py --help注释

-h, --help

show this help message and exit

帮助信息

-u USER, --user USER

Username to use when connecting to CN

CN用户名

-p PASSWORD, --password PASSWORD

Password to use when connecting to CN

CN用户密码

-H HOST, --host HOST

Host ip to use when Connecting to CN

CN 用户IP连接地址

-P PORT, --port PORT

Port number to use when connecting to CN (default: 0)

CN 连接端口

--databases [DATABASES [DATABASES ...]]

Databases list to load

批量导入导出库名列表

--do-tables [DO_TABLES [DO_TABLES ...]]

Tables list to load, format: database.table

批量导入导出指定表名列表

--ignore-tables [IGNORE_TABLES [IGNORE_TABLES ...]]

Tables list not to load, format: database.table

批量导入导出忽略表名列表

--clusterid [CLUSTERID]

Cluster ID (default: 0)

集群ID

--clustermode [CLUSTERMODE]

Cluster mode (default: multiple)

集群模式,single or multiple(仅支持文件传输协议通道)

--type [TYPE]

Batch load type, value is out or in.

批量导数类型,导出 or 导入

--parallel [PARALLEL]

Parallel degree, range in [1,20] (default: 1)

批量导出并发度

--fields-terminated-by [FIELDS_TERMINATED_BY]

Fields in the output file are terminated by the given string (default: ,)

列分隔符

--fields-enclosed-by [FIELDS_ENCLOSED_BY]

Fields in the output file are enclosed by the given character.

列包裹符

--fields-optionally-enclosed-by [FIELDS_OPTIONALLY_ENCLOSED_BY]

Fields in the output file are optionally enclosed by the given character

可选列包裹符(域名)及端口

--fields-escaped-by [FIELDS_ESCAPED_BY]

Fields in the output file are escaped by the given character

转义字符

--lines-terminated-by [LINES_TERMINATED_BY]

Lines in the output file are terminated by the given string (default: \n)

行分隔符

--targetdir [TARGETDIR]

Target directory

导入导出根目录

--suffix [SUFFIX]

Suffix name for load file

导入导出文件后缀名

--encrypt-key [ENCRYPT_KEY]

Encrypt key for zip file.

Zip压缩加密解密密码

--charset [CHARSET]

Character set for loadserver

导入导出字符集类型

--endstate [ENDSTATE]

Loadout file final state, 0: uploaded and merge, 1: uploaded, 2: saved on DN, 3: specify the number of loadout files or the number of lines per loadout file(default: 0).

结束阶段标志:

导出:

0-导出文件在out目录,并合并为一个文件

1-导出文件在out目录,不合并

2-导出文件存放在DBAgent端,参考dbtool -endstate参数选项限制。

3-指定加载文件的数量或每个加载文件的行数

导入:不填时默认导入全流程(仅支持文件传输协议通道)

--filenum [FILENUM]

LSplit File number, use it with para endstate (default: 0)

endstate=3时,指定导出文件数目(仅支持文件传输协议通道)

--fileline [FILELINE]

File Lines per loadout file, use it with para endstate (default: 0)

endstate=3时,指定导出文件最大行数(仅支持文件传输协议通道)

--errorignore [ERRORIGNORE]

Max error data numbers we can ignore when import data (default: 0)

导入最大忽视错误的行数

--retry

Retry batch loadout (default: False)

导出重试(仅支持文件传输协议通道)

-C, --compress

Compress file with zip for loadout file (default: False)

是否支持导入导出压缩

--backup

Backup loadin file (default: False).

是否备份导入文件(仅支持文件传输协议通道)

--no-data

Not load data (default: False).

是否导入导出数据文件

--no-create-info

Not load create info (default: False).

是否导入导出DDL文件

--add-drop-database

Add a DROP DATABASE before each create (default: False)

导出生成SQL创建库前添加DROP语句

--add-drop-table

Add a DROP TABLE before each create (default: False)

导出生成SQL创建表前添加DROP语句

--loadin-support-null

loadserver support ",," as NULL value (default:False).

是否支持0长度字符串为NULL,0为不支持,1为支持

SQL 语法介绍

1. 导入命令中 SQL 语法如下:

LOAD DATA [LOW_PRIORITY | CONCURRENT] INFILE 'file_name'

[REPLACE | IGNORE]

INTO TABLE tbl_name

[PARTITION (partition_name,...)]

[CHARACTER SET charset_name]

[{FIELDS | COLUMNS}

[TERMINATED BY 'string']

[[OPTIONALLY] ENCLOSED BY 'char'|ENCLOSED BY'']

[ESCAPED BY 'char']

]

[LINES

[STARTING BY 'string']

[TERMINATED BY 'string']

]

[IGNORE number {LINES | ROWS}]

[(col_name_or_user_var,...)]

[SET col_name = expr,...]

[WHEN when_clause]

[TRAILING NULLCOLS]

[gdb_format 'JCSV']

[gdb_format 'JCSV']

可选项介绍:

LOW_PRIORITY : 使用该选项,数据库等待导入涉及表没有操作时才进行导入,该选项仅对使用表锁存储引擎有效(MYISAM、MERGE、MEMORY等)。

CONCURRENT : 当表满足并发插入数据时,Load data 语句可与Insert语句并行执行。

file_name : 导入数据文件名,若相对路径下则位于loadin_path配置目录。

REPLACE :当数据导入存在主键冲突或唯一索引冲突,替换表中冲突数据。

IGNORE : 当数据导入存在主键冲突或唯一索引冲突,忽略该行导入数据。

tbl_name :数据要导入的库表。

PARTITION : 表所在分区。

FIELDS [TERMINATED BY 'string'] : 行数据列值以 'string' 结尾分割。

FIELDS [[OPTIONALLY] ENCLOSED BY 'char'] :指定OPTIONALLY,非数据列值使用 'char' 字符引用,不指定则列数据值全部被 'char' 引用。

FIELDS [ESCAPED BY 'char'] : 指定数据转义字符 'char'。

LINES [STARTING BY 'string'] : 指定行数据以 'string' 开始。

LINES [TERMINATED BY 'string'] : 指定行数据以 'string' 结尾。(注意:LoadServer 限制该 'string' 长度小于等于64个字节)

IGNORE : 忽略数据文件开始行数。

[(col_name_or_user_var,...)] :指定列导入,若不指定则默认指定全部列导入。(LoadServer数据导入必须指定列)。

[SET col_name = expr,...] :SET语句,用于对数据列值进行需要的转换操作。

WHEN : 条件导入语法,支持表达式运算符:+ 、- 、* 、/ 、=、>=、=<、> < 、<>、substr()、concat()、 in、between、like函数。

[TRAILING NULLCOLS]:数据文件缺少的最后面的列,导入时用NULL补充。

[gdb_format 'JCSV']:对导入数据不做转义处理,‘\’不作为转义符,作为普通字符导入。

2. 导出命令中 SQL 语法如下:

SELECT (col_name[,...]) FROM tbl_name [WHERE where_clause] INTO

OUTFILE 'file_name'

[{FIELDS | COLUMNS}

[TERMINATED BY 'string']

[[OPTIONALLY] ENCLOSED BY 'char']

[ESCAPED BY 'char']]

[LINES

[STARTING BY 'string']

[TERMINATED BY 'string']]

[gdb_format {'JCSV'|'nospace_filling'}]

[storagedb g1,g2]

(col_name[,...]) : 指定数据列导出,部分或全部,不支持*代表全部列。

tbl_name :导出数据的库表。

file_name :导出数据存放文件,若相对路径则存放在loadout_path配置目录。

WHERE : where字句与标准SQL语句相同。

FIELDS、LINES使用与导入语句相同。

[gdb_format 'nospace_filling']:导出数据下档格式没有分隔符。

[gdb_format 'JCSV']:特殊字符导出时不做转义处理。

[storagedb g1,g2]: 仅导出分片1、2数据。

数据导入示例

数据导入使用计算节点通道或是使用文件传输协议通道依赖配置,默认使用计算节点通道,参考配置:

# whether to use ftp or not;

# unit: NA, range: {0: not to use ftp, 1: use ftp}, default: 1, dynamic: yes;

load_enable_ftp = 0

支持命令行指定计算节点连接信息,命令行优先级高于配置选项,参考命令行选项

-db-conn-info="127.0.0.1:5012|127.0.0.1:5013"

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论