ndb_import 将CSV 格式的数据(例如mysqldump
--tab
生成的数据)直接导入
NDB
使用 NDB API。
ndb_import需要连接到导航台管理服务器( ndb_mgmd)才能运行;它不需要连接到 MySQL 服务器。
用法
ndb_import db_name file_name options
ndb_import需要两个参数。
db_name
是要导入数据的表所在的数据库的名称;
file_name
是要从中读取数据的 CSV 文件的名称;如果该文件不在当前目录中,则必须包含该文件的路径。文件名必须与表名相匹配;不考虑文件的扩展名(如果有)。ndb_import支持的选项
包括用于指定字段分隔符、转义符和行终止符的选项,本节后面将对此进行描述。
在 NDB 8.0.30 之前,ndb_import拒绝它从 CSV 文件中读取的任何空行。从 NDB 8.0.30 开始,当导入单个列时,可以用作列值的空值,ndb_import 以与LOAD DATA
语句相同的方式处理它。
ndb_import必须能够连接到 NDB Cluster 管理服务器;因此,[api]
簇
config.ini
文件中必须有一个未使用的槽。
要将使用不同存储引擎的现有表复制为表,例如InnoDB
,
NDB
使用mysql
客户端执行
SELECT INTO
OUTFILE
将现有表导出到 CSV 文件的
CREATE TABLE
LIKE
语句,然后执行创建具有相同的新表的语句结构为现有表,然后
ALTER TABLE ...
ENGINE=NDB
在新表上执行;此后,从系统 shell 调用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_table ENGINE=NDB; mysql> EXIT; Bye $>
一旦创建了目标数据库和表,就不再需要正在运行的mysqld 。如果您愿意,可以在继续之前 使用mysqladmin shutdown或其他方法停止它。
在系统外壳中:
# if you are not already in the MySQL bin directory: $> cd path-to-mysql-bin-dir $> 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 $>
下表显示了 可以与ndb_import一起使用的所有选项。表后有其他说明。
表 23.35 与程序 ndb_import 一起使用的命令行选项
格式 | 描述 | 添加、弃用或删除 |
---|---|---|
发生任何致命错误时转储核心;用于调试 | (支持所有基于 MySQL 8.0 的 NDB 版本) |
|
对于隐藏PK的表,指定autoincrement增量。见 mysqld | (支持所有基于 MySQL 8.0 的 NDB 版本) |
|
对于具有隐藏 PK 的表,指定自动增量偏移量。见 mysqld | (支持所有基于 MySQL 8.0 的 NDB 版本) |
|
对于具有隐藏 PK 的表,指定预取的自动增量值的数量。见 mysqld | (支持所有基于 MySQL 8.0 的 NDB 版本) |
|
包含字符集的目录 | (支持所有基于 MySQL 8.0 的 NDB 版本) |
|
放弃前重试连接的次数 | (支持所有基于 MySQL 8.0 的 NDB 版本) |
|
尝试联系管理服务器之间等待的秒数 | (支持所有基于 MySQL 8.0 的 NDB 版本) |
|
与 --ndb-connectstring 相同 | (支持所有基于 MySQL 8.0 的 NDB 版本) |
|
要创建的集群连接数 | (支持所有基于 MySQL 8.0 的 NDB 版本) |
|
当工作失败时,继续下一个工作 | (支持所有基于 MySQL 8.0 的 NDB 版本) |
|
写入核心文件出错;用于调试 | (支持所有基于 MySQL 8.0 的 NDB 版本) |
|
用于设置典型 CSV 选项值的速记选项。有关语法和其他信息,请参阅文档 | (支持所有基于 MySQL 8.0 的 NDB 版本) |
|
每个数据节点的线程数,执行数据库操作 | (支持所有基于 MySQL 8.0 的 NDB 版本) |
|
读取全局文件后读取给定文件 | (支持所有基于 MySQL 8.0 的 NDB 版本) |
|
仅从给定文件中读取默认选项 | (支持所有基于 MySQL 8.0 的 NDB 版本) |
|
还阅读带有 concat(group, suffix) 的组 | (支持所有基于 MySQL 8.0 的 NDB 版本) |
|
错误插入类型,用于测试目的;使用“列表”获取所有可能的值 | (支持所有基于 MySQL 8.0 的 NDB 版本) |
|
以毫秒为单位的错误插入延迟;添加了随机变化 | (支持所有基于 MySQL 8.0 的 NDB 版本) |
|
与 LOAD DATA 语句的 FIELDS ENCLOSED BY 选项相同。对于 CSV 输入,这与使用 --fields-optionally-enclosed-by 相同 | (支持所有基于 MySQL 8.0 的 NDB 版本) |
|
与 LOAD DATA 语句的 FIELDS ESCAPED BY 选项相同 | (支持所有基于 MySQL 8.0 的 NDB 版本) |
|
与 FIELDS OPTIONALLY ENCLOSED BY LOAD DATA 语句的选项相同 | (支持所有基于 MySQL 8.0 的 NDB 版本) |
|
与 LOAD DATA 语句的 FIELDS TERMINATED BY 选项相同 | (支持所有基于 MySQL 8.0 的 NDB 版本) |
|
显示帮助文本并退出 | (支持所有基于 MySQL 8.0 的 NDB 版本) |
|
睡眠等待更多事情的毫秒数 | (支持所有基于 MySQL 8.0 的 NDB 版本) |
|
idlesleep 前重试次数 | (支持所有基于 MySQL 8.0 的 NDB 版本) |
|
忽略输入文件中的前 # 行。用于跳过非数据头 | (支持所有基于 MySQL 8.0 的 NDB 版本) |
|
输入类型:随机或 csv | (支持所有基于 MySQL 8.0 的 NDB 版本) |
|
处理输入的线程数。如果 --input-type 为 csv,则必须为 2 或更多 | (支持所有基于 MySQL 8.0 的 NDB 版本) |
|
状态文件(非空 *.rej 文件除外)通常在作业完成时删除。使用此选项会导致保留所有状态文件 | (支持所有基于 MySQL 8.0 的 NDB 版本) |
|
与 LOAD DATA 语句的 LINES TERMINATED BY 选项相同 | (支持所有基于 MySQL 8.0 的 NDB 版本) |
|
从登录文件中读取给定路径 | (支持所有基于 MySQL 8.0 的 NDB 版本) |
|
仅导入此数量的输入数据行;默认为 0,即导入所有行 | (支持所有基于 MySQL 8.0 的 NDB 版本) |
|
表示要导入的 CSV 文件中缺少自动增量值。 | 添加:NDB 8.0.30 |
|
如果发生变化(状态、拒绝的行、临时错误),定期打印正在运行的作业的状态。值 0 禁用。值 1 打印看到的任何变化。较高的值会以指数方式减少状态打印,达到某个预定义的限制 | (支持所有基于 MySQL 8.0 的 NDB 版本) |
|
设置用于连接到 ndb_mgmd 的连接字符串。语法:“[nodeid=id;][host=]hostname[:port]”。覆盖 NDB_CONNECTSTRING 和 my.cnf 中的条目 | (支持所有基于 MySQL 8.0 的 NDB 版本) |
|
与 --ndb-connectstring 相同 | (支持所有基于 MySQL 8.0 的 NDB 版本) |
|
为此节点设置节点 ID,覆盖 --ndb-connectstring 设置的任何 ID | (支持所有基于 MySQL 8.0 的 NDB 版本) |
|
为交易节点的选择启用优化。默认启用;使用 --skip-ndb-optimized-node-selection 禁用 | (支持所有基于 MySQL 8.0 的 NDB 版本) |
|
在单个事务中分批运行数据库操作 | (支持所有基于 MySQL 8.0 的 NDB 版本) |
|
不要从登录文件以外的任何选项文件中读取默认选项 | (支持所有基于 MySQL 8.0 的 NDB 版本) |
|
告诉事务协调器在选择数据节点时不要使用分布键提示 | (支持所有基于 MySQL 8.0 的 NDB 版本) |
|
数据库执行批处理是一组发送到 NDB 内核的事务和操作。此选项限制数据库执行批处理中的 NDB 操作(包括 blob 操作)。因此它也限制了异步事务的数量。值 0 无效 | (支持所有基于 MySQL 8.0 的 NDB 版本) |
|
限制执行批次中的字节数(默认 0 = 无限制) | (支持所有基于 MySQL 8.0 的 NDB 版本) |
|
输出类型:默认为ndb,null用于测试 | (支持所有基于 MySQL 8.0 的 NDB 版本) |
|
处理输出或中继数据库操作的线程数 | (支持所有基于 MySQL 8.0 的 NDB 版本) |
|
将 I/O 缓冲区对齐到给定大小 | (支持所有基于 MySQL 8.0 的 NDB 版本) |
|
I/O 缓冲区的大小是页面大小的倍数。CSV 输入工作者分配双倍大小的缓冲区 | (支持所有基于 MySQL 8.0 的 NDB 版本) |
|
完成的异步事务的每次轮询超时;轮询一直持续到所有轮询完成或发生错误 | (支持所有基于 MySQL 8.0 的 NDB 版本) |
|
打印程序参数列表并退出 | (支持所有基于 MySQL 8.0 的 NDB 版本) |
|
限制数据加载中拒绝的行数(具有永久错误的行)。默认值为 0,这意味着任何被拒绝的行都会导致致命错误。超出限制的行也添加到 *.rej | (支持所有基于 MySQL 8.0 的 NDB 版本) |
|
如果作业中止(临时错误、用户中断),则继续处理尚未处理的行 | (支持所有基于 MySQL 8.0 的 NDB 版本) |
|
限制行队列中的行数(默认 0 = 无限制);如果 --input-type 是随机的,则必须是 1 或更多 | (支持所有基于 MySQL 8.0 的 NDB 版本) |
|
限制行队列中的字节数(0 = 无限制) | (支持所有基于 MySQL 8.0 的 NDB 版本) |
|
在哪里写状态文件;当前目录是默认的 | (支持所有基于 MySQL 8.0 的 NDB 版本) |
|
将与性能相关的选项和内部统计信息保存在 *.sto 和 *.stt 文件中。即使未使用 --keep-state,这些文件也会在成功完成时保留 | (支持所有基于 MySQL 8.0 的 NDB 版本) |
|
导入数据的目标名称;默认是输入文件的基本名称 | 添加:NDB 8.0.28 |
|
临时错误之间休眠的毫秒数 | (支持所有基于 MySQL 8.0 的 NDB 版本) |
|
每个执行批次,由于临时错误导致事务失败的次数;0 表示任何临时错误都是致命的。此类错误不会导致将任何行写入 .rej 文件 | (支持所有基于 MySQL 8.0 的 NDB 版本) |
|
显示帮助文本并退出;与 --help 相同 | (支持所有基于 MySQL 8.0 的 NDB 版本) |
|
启用详细输出 | (支持所有基于 MySQL 8.0 的 NDB 版本) |
|
显示版本信息并退出 | (支持所有基于 MySQL 8.0 的 NDB 版本) |
-
命令行格式 --abort-on-error
发生任何致命错误时转储核心;仅用于调试。
-
命令行格式 --ai-increment=#
类型 整数 默认值 1
最小值 1
最大值 4294967295
对于有隐藏主键的表,指定自增增量,就像
auto_increment_increment
MySQL Server中的系统变量一样。 -
命令行格式 --ai-offset=#
类型 整数 默认值 1
最小值 1
最大值 4294967295
对于隐藏主键的表,指定自增偏移量。类似于
auto_increment_offset
系统变量。 -
命令行格式 --ai-prefetch-sz=#
类型 整数 默认值 1024
最小值 1
最大值 4294967295
对于具有隐藏主键的表,指定预取的自动增量值的数量。行为类似于
ndb_autoincrement_prefetch_sz
MySQL 服务器中的系统变量。 -
命令行格式 --character-sets-dir=path
包含字符集的目录。
-
命令行格式 --connections=#
类型 整数 默认值 1
最小值 1
最大值 4294967295
要创建的集群连接数。
-
命令行格式 --connect-retries=#
类型 整数 默认值 12
最小值 0
最大值 12
放弃前重试连接的次数。
-
命令行格式 --connect-retry-delay=#
类型 整数 默认值 5
最小值 0
最大值 5
尝试联系管理服务器之间等待的秒数。
-
命令行格式 --connect-string=connection_string
类型 细绳 默认值 [none]
与 相同
--ndb-connectstring
。 -
命令行格式 --continue
当一个作业失败时,继续下一个作业。
-
命令行格式 --core-file
写入核心文件出错;在调试中使用。
--csvopt
=string
命令行格式 --csvopt=opts
类型 细绳 默认值 [none]
提供设置典型 CSV 导入选项的快捷方式。此选项的参数是由以下一个或多个参数组成的字符串:
c
: 以逗号结尾的字段d
: 使用默认值,除非被另一个参数覆盖n
: 行终止于\n
q
:可选地用双引号字符 ("
) 括起来的字段r
: 行终止于\r
在 NDB 8.0.28 及更高版本中,处理此选项参数中使用的参数顺序,以便最右边的参数始终优先于已在同一参数值中使用的任何潜在冲突参数。这也适用于给定参数的任何重复实例。在 NDB 8.0.28 之前,参数的顺序没有区别,除了当同时指定
n
和时r
,最后出现(最右边)的那个是实际生效的参数。此选项用于在难以传输转义符或引号的情况下进行测试。
-
命令行格式 --db-workers=#
类型 整数 默认值 4
最小值 1
最大值 4294967295
每个数据节点执行数据库操作的线程数。
-
命令行格式 --defaults-file=path
类型 细绳 默认值 [none]
仅从给定文件中读取默认选项。
-
命令行格式 --defaults-extra-file=path
类型 细绳 默认值 [none]
读取全局文件后读取给定文件。
-
命令行格式 --defaults-group-suffix=string
类型 细绳 默认值 [none]
还可以阅读带有 concat(group, suffix) 的组。
--errins-type
=name
命令行格式 --errins-type=name
类型 枚举 默认值 [none]
有效值 stopjob
stopall
sighup
sigint
list
错误插入类型;用作值以获得所有可能的值
list
。name
此选项仅用于测试目的。-
命令行格式 --errins-delay=#
类型 整数 默认值 1000
最小值 0
最大值 4294967295
单元 小姐 以毫秒为单位的错误插入延迟;添加了随机变化。此选项仅用于测试目的。
--fields-enclosed-by
=char
命令行格式 --fields-enclosed-by=char
类型 细绳 默认值 [none]
这与
FIELDS ENCLOSED BY
选项对LOAD DATA
语句的作用相同,指定要解释为引用字段值的字符。对于 CSV 输入,这与--fields-optionally-enclosed-by
.--fields-escaped-by
=name
命令行格式 --fields-escaped-by=char
类型 细绳 默认值 \
FIELDS ESCAPED BY
以与 SQLLOAD DATA
语句 的选项相同的方式指定转义字符 。--fields-optionally-enclosed-by
=char
命令行格式 --fields-optionally-enclosed-by=char
类型 细绳 默认值 [none]
这与
FIELDS OPTIONALLY ENCLOSED BY
选项对LOAD DATA
语句的作用相同,指定要解释为可选的引用字段值的字符。对于 CSV 输入,这与--fields-enclosed-by
.-
命令行格式 --fields-terminated-by=char
类型 细绳 默认值 \t
这与
FIELDS TERMINATED BY
选项对LOAD DATA
语句的作用相同,指定要解释为字段分隔符的字符。 -
命令行格式 --help
显示帮助文本并退出。
-
命令行格式 --idlesleep=#
类型 整数 默认值 1
最小值 1
最大值 4294967295
单元 小姐 等待更多工作执行的休眠毫秒数。
-
命令行格式 --idlespin=#
类型 整数 默认值 0
最小值 0
最大值 4294967295
睡觉前重试的次数。
-
命令行格式 --ignore-lines=#
类型 整数 默认值 0
最小值 0
最大值 4294967295
导致 ndb_import 忽略
#
输入文件的第一行。这可以用来跳过不包含任何数据的文件头。 --input-type
=name
命令行格式 --input-type=name
类型 枚举 默认值 csv
有效值 random
csv
设置输入类型。默认是
csv
;random
仅用于测试目的。.-
命令行格式 --input-workers=#
类型 整数 默认值 4
最小值 1
最大值 4294967295
设置处理输入的线程数。
-
命令行格式 --keep-state
默认情况下,ndb_import
*.rej
在完成作业时删除所有状态文件(非空文件除外)。指定此选项(也不需要参数)以强制程序改为保留所有状态文件。 -
命令行格式 --lines-terminated-by=char
类型 细绳 默认值 \n
这与
LINES TERMINATED BY
选项对LOAD DATA
语句的作用相同,指定要解释为行尾的字符。 -
命令行格式 --log-level=#
类型 整数 默认值 0
最小值 0
最大值 2
在给定级别执行内部日志记录。此选项主要供内部和开发使用。
仅在 NDB 的调试版本中,可以使用此选项将日志记录级别设置为最大值 4。
-
命令行格式 --login-path=path
类型 细绳 默认值 [none]
从登录文件中读取给定路径。
-
命令行格式 --max-rows=#
类型 整数 默认值 0
最小值 0
最大值 4294967295
单元 字节 仅导入此数量的输入数据行;默认值为 0,即导入所有行。
-
命令行格式 --missing-ai-column='name'
介绍 8.0.30-ndb-8.0.30 类型 布尔值 默认值 FALSE
导入单个表或多个表时可以使用此选项。使用时,它表示正在导入的 CSV 文件不包含
AUTO_INCREMENT
列的任何值,并且 ndb_import应该提供它们;如果使用该选项并且该AUTO_INCREMENT
列包含任何值,则导入操作无法继续。 -
命令行格式 --monitor=#
类型 整数 默认值 2
最小值 0
最大值 4294967295
单元 字节 如果发生变化(状态、拒绝的行、临时错误),定期打印正在运行的作业的状态。设置为 0 以禁用此报告。设置为 1 打印看到的任何更改。较高的值会降低此状态报告的频率。
-
命令行格式 --ndb-connectstring=connection_string
类型 细绳 默认值 [none]
设置用于连接到 ndb_mgmd 的连接字符串。语法:“[nodeid=id;][host=]hostname[:port]”。覆盖 NDB_CONNECTSTRING 和 my.cnf 中的条目。
-
命令行格式 --ndb-mgmd-host=connection_string
类型 细绳 默认值 [none]
与 相同
--ndb-connectstring
。 -
命令行格式 --ndb-nodeid=#
类型 整数 默认值 [none]
为此节点设置节点 ID,覆盖由 设置的任何 ID
--ndb-connectstring
。 --ndb-optimized-node-selection
命令行格式 --ndb-optimized-node-selection
为交易节点的选择启用优化。默认启用;用于
--skip-ndb-optimized-node-selection
禁用。-
命令行格式 --no-asynch
在单个事务中分批运行数据库操作。
-
命令行格式 --no-defaults
不要从登录文件以外的任何选项文件中读取默认选项。
-
命令行格式 --no-hint
不要使用分发键提示来选择数据节点。
-
命令行格式 --opbatch=#
类型 整数 默认值 256
最小值 1
最大值 4294967295
单元 字节 对每个执行批次的操作数(包括 blob 操作)设置限制,从而限制异步事务的数量。
-
命令行格式 --opbytes=#
类型 整数 默认值 0
最小值 0
最大值 4294967295
单元 字节 对每个执行批处理的字节数设置限制。使用 0 表示没有限制。
--output-type
=name
命令行格式 --output-type=name
类型 枚举 默认值 ndb
有效值 null
设置输出类型。
ndb
是默认值。null
仅用于测试。-
命令行格式 --output-workers=#
类型 整数 默认值 2
最小值 1
最大值 4294967295
设置处理输出或中继数据库操作的线程数。
-
命令行格式 --pagesize=#
类型 整数 默认值 4096
最小值 1
最大值 4294967295
单元 字节 将 I/O 缓冲区对齐到给定的大小。
-
命令行格式 --pagecnt=#
类型 整数 默认值 64
最小值 1
最大值 4294967295
将 I/O 缓冲区的大小设置为页面大小的倍数。CSV 输入工作者分配大小加倍的缓冲区。
-
命令行格式 --polltimeout=#
类型 整数 默认值 1000
最小值 1
最大值 4294967295
单元 小姐 为完成的异步事务设置每次轮询超时;轮询一直持续到所有轮询完成,或者直到发生错误。
-
命令行格式 --print-defaults
打印程序参数列表并退出。
-
命令行格式 --rejects=#
类型 整数 默认值 0
最小值 0
最大值 4294967295
限制数据加载中被拒绝的行(具有永久错误的行)的数量。默认值为 0,这意味着任何被拒绝的行都会导致致命错误。任何导致超出限制的行都将添加到
.rej
文件中。此选项施加的限制在当前运行期间有效。为此, 重新启动的运行
--resume
被视为 “新”运行。 -
命令行格式 --resume
如果作业中止(由于临时数据库错误或被用户中断),则继续处理任何尚未处理的行。
-
命令行格式 --rowbatch=#
类型 整数 默认值 0
最小值 0
最大值 4294967295
单元 行 对每个行队列的行数设置限制。使用 0 表示没有限制。
-
命令行格式 --rowbytes=#
类型 整数 默认值 262144
最小值 0
最大值 4294967295
单元 字节 对每个行队列的字节数设置限制。使用 0 表示没有限制。
-
命令行格式 --stats
将与性能相关的选项信息和其他内部统计信息保存在名为
*.sto
和的文件中*.stt
。这些文件总是在成功完成时保留(即使--keep-state
没有指定)。 --state-dir
=name
命令行格式 --state-dir=path
类型 细绳 默认值 .
将程序运行产生的状态文件(
、tbl_name
.map
、tbl_name
.rej
和 ) 写入何处;tbl_name
.res
默认是当前目录。tbl_name
.stt-
命令行格式 --table=name
介绍 8.0.28-ndb-8.0.28 类型 细绳 默认值 [input file base name]
默认情况下,ndb_import尝试将数据导入到一个表中,该表的名称是从中读取数据的 CSV 文件的基本名称。
--table
从 NDB 8.0.28 开始,您可以通过使用选项(缩写形式-t
) 指定它来覆盖表名的选择。 -
命令行格式 --tempdelay=#
类型 整数 默认值 10
最小值 0
最大值 4294967295
单元 小姐 在临时错误之间休眠的毫秒数。
-
命令行格式 --temperrors=#
类型 整数 默认值 0
最小值 0
最大值 4294967295
每个执行批次,事务因临时错误而失败的次数。默认值为 0,这意味着任何临时错误都是致命错误。临时错误不会导致向
.rej
文件中添加任何行。 --verbose
,-v
命令行格式 --verbose[=#]
类型 布尔值 默认值 false
启用详细输出。
-
命令行格式 --usage
显示帮助文本并退出;一样
--help
。 -
命令行格式 --version
显示版本信息并退出。
与 一样LOAD DATA
,字段和行格式的选项与用于创建 CSV 文件的选项非常匹配,无论这是使用
SELECT INTO ...
OUTFILE
还是通过其他方式完成的。没有等效于LOAD DATA
语句STARTING WITH
选项。