ndb_import —将CSV数据导入NDB
ndb_import使用NDB API直接将CSV格式的数据(例如 mysqldump生成的数据)--tab
导入NDB
。ndb_import需要连接到NDB管理服务器( ndb_mgmd)才能起作用;它不需要连接到MySQL服务器。
用法
ndb_import db_name file_name options
ndb_import需要两个参数。db_name
是在其中找到要导入数据的表的数据库的名称;file_name
是要从中读取数据的CSV文件的名称;如果该文件不在当前目录中,则必须包含该文件的路径。文件名必须与表名匹配。不考虑文件扩展名(如果有)。ndb_import支持的选项包括用于指定字段分隔符,转义符和行终止符的选项,本节稍后将对其进行介绍。ndb_import必须能够连接到NDB群集管理服务器。因此,必须有一个未使用的[api]
群集config.ini
文件中的插槽。
要复制使用不同存储引擎(例如)的现有表InnoDB
作为NDB
表,请使用mysql客户端执行一条SELECT INTO OUTFILE
语句以将现有表导出到CSV文件,然后执行一条CREATE TABLE LIKE
语句以创建具有相同表的新表结构为现有表,然后ALTER TABLE ... ENGINE=NDB
在新表上执行;之后,从系统外壳调用ndb_import将数据加载到新NDB
表中。例如,可以将InnoDB
名为myinnodb_table
数据库的现有表myinnodb
导出为NDB
名为表myndb_table
myndb
假设您已经以适当的特权以MySQL用户身份登录,则在如下所示的数据库中登录:
在mysql客户端中:
mysql>
USE myinnodb; mysql>SELECT *INTO OUTFILE '/tmp/myndb_table.csv' >FIELDS TERMINATED BY ','OPTIONALLY ENCLOSED BY '"'ESCAPED BY '\\' >LINES TERMINATED BY '\n' >FROM myinnodbtable; mysql>CREATE DATABASE myndb; mysql>USE myndb; mysql>CREATE TABLE myndb_table LIKE myinnodb.myinnodb_table; mysql>ALTER TABLE myndb_tableENGINE =NDB ; mysql>EXIT ; Bye shell>一旦创建了目标数据库和表,就不再需要运行的mysqld。如果愿意,可以在继续操作之前使用mysqladmin shutdown或其他方法停止它。
在系统外壳中:
# if you are not already in the MySQL bin directory: shell>
cd path-to-mysql-bin-dir shell>ndb_import myndb /tmp/myndb_table.csv --fields-optionally-enclosed-by='"' \ --fields-terminated-by="," --fields-escaped-by='\\'输出应类似于此处显示的内容:
job-1 import myndb.myndb_table from /tmp/myndb_table.csv job-1 [running] import myndb.myndb_table from /tmp/myndb_table.csv job-1 [success] import myndb.myndb_table from /tmp/myndb_table.csv job-1 imported 19984 rows in 0h0m9s at 2277 rows/s jobs summary: defined: 1 run: 1 with success: 1 with failure: 0 shell>
下表包含特定于ndb_import的选项。附加说明如下表。有关大多数NDB群集程序(包括ndb_import)通用的选项,请参见“ NDB群集程序的通用选项— NDB群集程序的通用选项”。
ndb_import程序的命令行选项
格式 | 描述 | 添加,不建议使用或删除 |
---|---|---|
| 在发生致命错误时转储核心;用于调试 | (在所有基于MySQL 8.0的版本中受支持) |
| 对于具有隐藏PK的表,请指定自动增量。见mysqld | (在所有基于MySQL 8.0的版本中受支持) |
| 对于具有隐藏PK的表,请指定自动增量偏移量。见mysqld | (在所有基于MySQL 8.0的版本中受支持) |
| 对于具有隐藏PK的表,请指定预取的自动增量值的数量。见mysqld | (在所有基于MySQL 8.0的版本中受支持) |
| 要创建的集群连接数 | (在所有基于MySQL 8.0的版本中受支持) |
| 作业失败时,继续下一个作业 | (在所有基于MySQL 8.0的版本中受支持) |
| 每个数据节点执行数据库操作的线程数 | (在所有基于MySQL 8.0的版本中受支持) |
| 错误插入类型,用于测试;使用“列表”获取所有可能的值 | (在所有基于MySQL 8.0的版本中受支持) |
| 错误插入延迟(以毫秒为单位);添加随机变化 | (在所有基于MySQL 8.0的版本中受支持) |
| 与LOAD DATA语句的FIELDS ENCLOSED BY选项相同。对于CSV输入,这与使用--fields-optionally-enclosed-by相同 | (在所有基于MySQL 8.0的版本中受支持) |
| 与LOAD DATA语句的FIELDS ESCAPED BY选项相同 | (在所有基于MySQL 8.0的版本中受支持) |
| 与LOAD DATA语句的FIELDS OPTIONALLY ENCLOSED BY选项相同 | (在所有基于MySQL 8.0的版本中受支持) |
| 与LOAD DATA语句的FIELDS TERMINATED BY选项相同 | (在所有基于MySQL 8.0的版本中受支持) |
| 等待更多工作的睡眠时间(毫秒) | (在所有基于MySQL 8.0的版本中受支持) |
| 空闲睡眠前重试的次数 | (在所有基于MySQL 8.0的版本中受支持) |
| 忽略输入文件中的前#行。用于跳过非数据头 | (在所有基于MySQL 8.0的版本中受支持) |
| 输入类型:随机或CSV | (在所有基于MySQL 8.0的版本中受支持) |
| 处理输入的线程数。如果--input-type为csv,则必须为2或更大 | (在所有基于MySQL 8.0的版本中受支持) |
| 状态文件(非空*.rej文件除外)通常在作业完成时删除。使用此选项将导致保留所有状态文件 | (在所有基于MySQL 8.0的版本中受支持) |
| 与LOAD DATA语句的LINES TERMINATED BY选项相同 | (在所有基于MySQL 8.0的版本中受支持) |
| 仅导入此数量的输入数据行;默认值为0,将导入所有行 | (在所有基于MySQL 8.0的版本中受支持) |
| 如果发生了某些更改(状态,拒绝的行,临时错误),请定期打印正在运行的作业的状态。值0禁用。值1将打印看到的任何更改。较高的值将状态打印成指数减少,直至达到预定义的极限 | (在所有基于MySQL 8.0的版本中受支持) |
| 在单个事务中批量运行数据库操作 | (在所有基于MySQL 8.0的版本中受支持) |
| 不要使用分发键提示来选择数据节点(TC) | (在所有基于MySQL 8.0的版本中受支持) |
| 数据库执行批处理是发送到NDB内核的一组事务和操作。此选项限制数据库执行批处理中的NDB操作(包括Blob操作)。因此,它也限制了异步交易的数量。值0无效 | (在所有基于MySQL 8.0的版本中受支持) |
| 限制执行批处理中的字节数(默认0 =无限制) | (在所有基于MySQL 8.0的版本中受支持) |
| 输出类型:默认为ndb,测试时使用null | (在所有基于MySQL 8.0的版本中受支持) |
| 处理输出或中继数据库操作的线程数 | (在所有基于MySQL 8.0的版本中受支持) |
| 将I / O缓冲区对齐到给定的大小 | (在所有基于MySQL 8.0的版本中受支持) |
| I / O缓冲区的大小为页面大小的倍数。CSV输入工作程序分配一个双倍大小的缓冲区 | (在所有基于MySQL 8.0的版本中受支持) |
| 已完成异步事务的每次轮询超时;轮询将继续进行,直到完成所有轮询或发生错误 | (在所有基于MySQL 8.0的版本中受支持) |
| 限制数据加载中被拒绝的行(具有永久错误的行)的数量。默认值为0,这意味着任何拒绝的行都会导致致命错误。超出限制的行也添加到*.rej | (在所有基于MySQL 8.0的版本中受支持) |
| 如果作业中止(临时错误,用户中断),请继续处理尚未处理的行 | (在所有基于MySQL 8.0的版本中受支持) |
| 限制行队列中的行(默认0 =无限制);如果--input-type是random,则必须为1或更大 | (在所有基于MySQL 8.0的版本中受支持) |
| 限制行队列中的字节(0 =无限制) | (在所有基于MySQL 8.0的版本中受支持) |
| 写入状态文件的位置;当前目录为默认目录 | (在所有基于MySQL 8.0的版本中受支持) |
| 将与性能相关的选项和内部统计信息保存在*.sto和*.stt文件中。即使未使用--keep-state,这些文件也会成功完成 | (在所有基于MySQL 8.0的版本中受支持) |
| 两次临时错误之间睡眠的毫秒数 | (在所有基于MySQL 8.0的版本中受支持) |
| 每个执行批处理由于临时错误而导致事务失败的次数;0表示任何临时错误都是致命的。此类错误不会导致将任何行写入.rej文件 | (在所有基于MySQL 8.0的版本中受支持) |
| 启用详细输出 | (在所有基于MySQL 8.0的版本中受支持) |
--abort-on-error
属性 值 命令行格式 --abort-on-error 类型 布尔型 默认值 FALSE 在发生致命错误时转储核心;仅用于调试。
--ai-increment
=#
属性 值 命令行格式 --ai-increment=# 类型 整数 默认值 1 最低值 1 最大值 4294967295 对于具有隐藏主键的表,请指定自动增量,就像
auto_increment_increment
MySQL服务器中的系统变量一样。--ai-offset
=#
属性 值 命令行格式 --ai-offset=# 类型 整数 默认值 1 最低值 1 最大值 4294967295 对于具有隐藏主键的表,请指定自动增量偏移量。类似于
auto_increment_offset
系统变量。--ai-prefetch-sz
=#
属性 值 命令行格式 --ai-prefetch-sz=# 类型 整数 默认值 1024 最低值 1 最大值 4294967295 对于具有隐藏主键的表,请指定预取的自动增量值的数量。行为类似于
ndb_autoincrement_prefetch_sz
MySQL服务器中的系统变量。--connections
=#
属性 值 命令行格式 --connections=# 类型 整数 默认值 1 最低值 1 最大值 4294967295 要创建的集群连接数。
--continue
属性 值 命令行格式 --continue 类型 布尔型 默认值 FALSE 作业失败时,请继续下一个作业。
--db-workers
=#
属性 值 命令行格式 --db-workers=# 类型 整数 默认值 4 最低值 1 最大值 4294967295 每个数据节点执行数据库操作的线程数。
--errins-type
=name
属性 值 命令行格式 --errins-type=name 类型 列举 默认值 [none] 有效值 stopjob
stopall
sighup
sigint
list
错误插入类型;使用
list
作为name
值,以获得所有可能的值。此选项仅用于测试目的。--errins-delay
=#
属性 值 命令行格式 --errins-delay=# 类型 整数 默认值 1000 最低值 0 最大值 4294967295 错误插入延迟(以毫秒为单位);随机变化被添加。此选项仅用于测试目的。
--fields-enclosed-by
=char
属性 值 命令行格式 --fields-enclosed-by=char 类型 string 默认值 [none] 这与该
FIELDS ENCLOSED BY
选项对LOAD DATA
语句的作用方式相同,即指定要插入的字符作为引号字段值。对于CSV输入,与相同--fields-optionally-enclosed-by
。--fields-escaped-by
=name
属性 值 命令行格式 --fields-escaped-by=name 类型 string 默认值 \ 以与
FIELDS ESCAPED BY
选项对SQLLOAD DATA
语句相同的方式指定转义字符。--fields-optionally-enclosed-by
=char
属性 值 命令行格式 --fields-optionally-enclosed-by=char 类型 string 默认值 [none] 这与该
FIELDS OPTIONALLY ENCLOSED BY
选项的选项使用相同的方式,将要插入LOAD DATA
的字符指定为可选的引用字段值。对于CSV输入,与相同--fields-enclosed-by
。--fields-terminated-by
=char
属性 值 命令行格式 --fields-terminated-by=char 类型 string 默认值 \t 这与该
FIELDS TERMINATED BY
选项的选项相同LOAD DATA
,将要插入的字符指定为字段分隔符。--idlesleep
=#
属性 值 命令行格式 --idlesleep=# 类型 整数 默认值 1 最低值 1 最大值 4294967295 等待更多工作执行的睡眠毫秒数。
--idlespin
=#
属性 值 命令行格式 --idlespin=# 类型 整数 默认值 0 最低值 0 最大值 4294967295 睡觉前重试的次数。
--ignore-lines
=#
属性 值 命令行格式 --ignore-lines=# 类型 整数 默认值 0 最低值 0 最大值 4294967295 使ndb_import忽略
#
输入文件的第一行。这可以用来跳过不包含任何数据的文件头。--input-type
=name
属性 值 命令行格式 --input-type=name 类型 列举 默认值 csv 有效值 random
csv
设置输入类型的类型。默认值为
csv
;random
仅用于测试目的。。--input-workers
=#
属性 值 命令行格式 --input-workers=# 类型 整数 默认值 4 最低值 1 最大值 4294967295 设置处理输入的线程数。
--keep-state
属性 值 命令行格式 --keep-state 类型 布尔型 默认值 false 默认情况下,ndb_import
*.rej
在完成作业时会删除所有状态文件(非空文件除外)。指定此选项(也不需要参数),以强制程序保留所有状态文件。--lines-terminated-by
=name
属性 值 命令行格式 --lines-terminated-by=name 类型 string 默认值 \n 这与
LINES TERMINATED BY
选项对LOAD DATA
语句的作用方式相同,将要插入的字符指定为行尾。--log-level
=#
属性 值 命令行格式 --log-level=# 类型 整数 默认值 0 最低值 0 最大值 2 在给定级别执行内部日志记录。此选项主要供内部和开发使用。
仅在NDB的调试版本中,可以使用此选项将日志记录级别设置为最大4。
--max-rows
=#
属性 值 命令行格式 --max-rows=# 类型 整数 默认值 0 最低值 0 最大值 4294967295 仅导入此数量的输入数据行;默认值为0,将导入所有行。
--monitor
=#
属性 值 命令行格式 --monitor=# 类型 整数 默认值 2 最低值 0 最大值 4294967295 如果发生更改(状态,拒绝的行,临时错误),请定期打印正在运行的作业的状态。设置为0以禁用此报告。设置为1将打印看到的任何更改。较高的值会减少此状态报告的频率。
--no-asynch
属性 值 命令行格式 --no-asynch 类型 布尔型 默认值 FALSE 在单个事务中批量运行数据库操作。
--no-hint
属性 值 命令行格式 --no-hint 类型 布尔型 默认值 FALSE 不要使用分发键提示来选择数据节点。
--opbatch
=#
属性 值 命令行格式 --opbatch=# 类型 整数 默认值 256 最低值 1 最大值 4294967295 设置每个执行批处理的操作数(包括Blob操作)的限制,从而限制异步事务的数目。
--opbytes
=#
属性 值 命令行格式 --opbytes=# 类型 整数 默认值 0 最低值 0 最大值 4294967295 设置每个执行批处理的字节数限制。无限制地使用0。
--output-type
=name
属性 值 命令行格式 --output-type=name 类型 列举 默认值 ndb 有效值 null 设置输出类型。
ndb
是默认值。null
仅用于测试。--output-workers
=#
属性 值 命令行格式 --output-workers=# 类型 整数 默认值 2 最低值 1 最大值 4294967295 设置处理输出或中继数据库操作的线程数。
--pagesize
=#
属性 值 命令行格式 --pagesize=# 类型 整数 默认值 4096 最低值 1 最大值 4294967295 将I / O缓冲区对齐到给定的大小。
--pagecnt
=#
属性 值 命令行格式 --pagecnt=# 类型 整数 默认值 64 最低值 1 最大值 4294967295 将I / O缓冲区的大小设置为页面大小的倍数。CSV输入工作程序分配的缓冲区大小增加了一倍。
--polltimeout
=#
属性 值 命令行格式 --polltimeout=# 类型 整数 默认值 1000 最低值 1 最大值 4294967295 为完成的异步事务设置每次轮询超时;轮询将继续进行,直到完成所有轮询或发生错误为止。
--rejects
=#
属性 值 命令行格式 --rejects=# 类型 整数 默认值 0 最低值 0 最大值 4294967295 限制数据加载中被拒绝的行(具有永久错误的行)的数量。默认值为0,这意味着任何拒绝的行都会导致致命错误。任何导致超出限制的行都将添加到
.rej
文件中。此选项施加的限制在当前运行期间有效。为此,使用重新启动的运行
--resume
被认为是“新的”运行。--resume
属性 值 命令行格式 --resume 类型 布尔型 默认值 FALSE 如果作业被中止(由于临时的db错误或由于用户中断),请继续处理尚未处理的行。
--rowbatch
=#
属性 值 命令行格式 --rowbatch=# 类型 整数 默认值 0 最低值 0 最大值 4294967295 设置每个行队列的行数限制。无限制地使用0。
--rowbytes
=#
属性 值 命令行格式 --rowbytes=# 类型 整数 默认值 262144 最低值 0 最大值 4294967295 设置每个行队列的字节数限制。无限制地使用0。
--stats
属性 值 命令行格式 --stats 类型 布尔型 默认值 false 将与性能和其他内部统计信息有关的选项的信息保存在名为
*.sto
和的文件中*.stt
。这些文件始终保持成功完成的状态(即使--keep-state
未指定也是如此)。--state-dir
=name
属性 值 命令行格式 --state-dir=name 类型 string 默认值 . 在哪里写入状态文件(
tbl_name.map
,tbl_name.rej
,tbl_name.res
,和tbl_name.stt
通过该程序的运行。生产);默认为当前目录。--tempdelay
=#
属性 值 命令行格式 --tempdelay=# 类型 整数 默认值 10 最低值 0 最大值 4294967295 在临时错误之间休眠的毫秒数。
--temperrors
=#
属性 值 命令行格式 --temperrors=# 类型 整数 默认值 0 最低值 0 最大值 4294967295 每个执行批处理由于临时错误导致事务失败的次数。默认值为0,这意味着任何临时错误都是致命的。临时错误不会导致将任何行添加到
.rej
文件中。--verbose
,-v
属性 值 命令行格式 --verbose 类型 布尔型 默认值 false 启用详细输出。
与一样LOAD DATA
,无论是使用SELECT INTO ... OUTFILE
还是通过其他方式,用于字段和行格式设置的选项都与用于创建CSV文件的选项非常匹配。没有等效的LOAD DATA
语句STARTING WITH
选项。
NDB 7.6.2中添加了 ndb_import。