数据目录介绍
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"




