21.4.14 ndb_import —将 CSV 数据导入 NDB
ndb_import使用 NDB API 将 CSV 格式的数据(例如mysqldump --tab生成的数据)直接导入NDB
。 ndb_import需要连接到 NDBManagement 服务器(ndb_mgmd)才能起作用;它不需要连接到 MySQL 服务器。
Usage
ndb_import db_name file_name options
ndb_import需要两个参数。 * db_name
*是在其中找到要导入数据的 table 的数据库的名称; * file_name
*是从中读取数据的 CSV 文件的名称;如果该文件不在当前目录中,则必须包含该文件的路径。文件名必须与 table 名匹配。不考虑文件 extensions(如果有)。 ndb_import支持的选项包括用于指定字段分隔符,转义符和行终止符的选项,本节稍后将进行介绍。 ndb_import必须能够连接到 NDB 群集 Management 服务器;因此,群集config.ini
文件中必须有未使用的[api]
插槽。
要将使用不同存储引擎(例如InnoDB)的现有 table 复制为NDB
table,请使用mysqlClient 端执行选择进入 Files语句以将现有 table 导出到 CSV 文件,然后执行创建 table 喜欢语句以创建新 table 与现有 table 具有相同结构的 table,然后对新 table 执行ALTER TABLE ... ENGINE = NDB;之后,从系统 Shell 调用ndb_import将数据加载到新的NDB
table 中。例如,假设您已经以具有适当特权的 MySQL 用户身份登录,则可以将名为myinnodb
的数据库中现有的InnoDB
tablemyinnodb_table
导出到名为myndb
的数据库中的NDB
tablemyndb_table
中,如下所示。
- 在mysqlClient 端中:
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
shell>
创建目标数据库和 table 后,不再需要运行的mysqld。您可以根据需要使用mysqladmin shutdown或其他方法将其停止,然后再 continue。
- 在系统 Shell 中:
# 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>
下 table 包含特定于ndb_import的选项。附加说明如下 table 所示。有关大多数 NDB 群集程序(包括ndb_import)共有的选项,请参见第 21.4.32 节“ NDB 群集程序的公用选项-NDB 群集程序的公用选项”。
table21.250 ndb_import 程序的命令行选项
Format | Description | 添加,不建议使用或删除 |
---|---|---|
--abort-on-error | 在发生致命错误时转储核心;用于调试 | 添加:NDB 7.6.2 |
--ai-increment=# | 对于具有隐藏 PK 的 table,请指定自动递增增量。见 mysqld | 添加:NDB 7.6.2 |
--ai-offset=# | 对于具有隐藏 PK 的 table,请指定自动增量偏移量。见 mysqld | 添加:NDB 7.6.2 |
--ai-prefetch-sz=# | 对于具有隐藏 PK 的 table,请指定预取的自动增量值的数量。见 mysqld | 添加:NDB 7.6.2 |
--connections=# | 要创建的集群连接数 | 添加:NDB 7.6.2 |
--continue | 作业失败时,continue 下一个作业 | 添加:NDB 7.6.2 |
--db-workers=# | 每个数据节点执行数据库操作的线程数 | 添加:NDB 7.6.2 |
--errins-type=name | 错误插入类型,用于测试目的;使用“列 table”获取所有可能的值 | 添加:NDB 7.6.2 |
--errins-delay=# | 错误插入延迟(以毫秒为单位);随机变化被添加 | 添加:NDB 7.6.2 |
--fields-enclosed-by=char | 与 LOAD DATA 语句的 FIELDS ENCLOSED BY 选项相同。对于 CSVImporting,这与使用--fields-optionally-enclosed-by 相同 | 添加:NDB 7.6.2 |
--fields-escaped-by=name | 与 LOAD DATA 语句的 FIELDS ESCAPED BY 选项相同 | 添加:NDB 7.6.2 |
--fields-optionally-enclosed-by=char | 与 LOAD DATA 语句的 FIELDS OPTIONALLY ENCLOSED BY 选项相同 | 添加:NDB 7.6.2 |
--fields-terminated-by=char | 与 LOAD DATA 语句的 FIELDS TERMINATED BY 选项相同 | 添加:NDB 7.6.2 |
--idlesleep=# | await 更多操作的睡眠毫秒数 | 添加:NDB 7.6.2 |
--idlespin=# | 空闲睡眠前重试的次数 | 添加:NDB 7.6.2 |
--ignore-lines=# | 忽略 Importing 文件中的前#行。用于跳过非数据头 | 添加:NDB 7.6.2 |
--input-type=name | Importing 类型:随机或 CSV | 添加:NDB 7.6.2 |
--input-workers=# | 处理 Importing 的线程数。如果--input-type 为 csv,则必须为 2 或更大 | 添加:NDB 7.6.2 |
--keep-state | 状态文件(非空* .rej 文件除外)通常在作业完成时被删除。使用此选项将导致保留所有状态文件 | 添加:NDB 7.6.4 |
--lines-terminated-by=name | 与 LOAD DATA 语句的 LINES TERMINATED BY 选项相同 | 添加:NDB 7.6.2 |
--max-rows=# | 仅导入此数量的 Importing 数据行;默认值为 0,将导入所有行 | 添加:NDB 7.6.2 |
--monitor=# | 如果发生了某些更改(状态,拒绝的行,临时错误),请定期打印正在运行的作业的状态。值 0 禁用。值 1 打印任何可见的更改。较高的值将状态打印成指数减少,直至达到 sched 义的极限 | 添加:NDB 7.6.2 |
--no-asynch | 在单个事务中批量运行数据库操作 | 添加:NDB 7.6.2 |
--no-hint | 不要使用分发键提示来选择数据节点(TC) | 添加:NDB 7.6.2 |
--opbatch=# | 数据库执行批处理是发送到 NDB 内核的一组事务和操作。此选项限制数据库执行批处理中的 NDB 操作(包括 Blob 操作)。因此,它也限制了异步 Transaction 的数量。值 0 无效 | 添加:NDB 7.6.2 |
--opbytes=# | 执行批处理中的限制字节(默认 0 =无限制) | 添加:NDB 7.6.2 |
--output-type=name | 输出类型:默认为 ndb,用于测试时为 null | 添加:NDB 7.6.2 |
--output-workers=# | 处理输出或中继数据库操作的线程数 | 添加:NDB 7.6.2 |
--pagesize=# | 将 I/O 缓冲区对齐到给定的大小 | 添加:NDB 7.6.2 |
--pagecnt=# | I/O 缓冲区的大小为页面大小的倍数。 CSVImporting 工作程序分配一个双倍大小的缓冲区 | 添加:NDB 7.6.2 |
--polltimeout=# | 已完成异步事务的每次轮询超时;轮询将 continue 进行,直到完成所有轮询或发生错误 | 添加:NDB 7.6.2 |
--rejects=# | 限制数据加载中被拒绝的行(具有永久错误的行)的数量。默认值为 0,这意味着任何拒绝的行都会导致致命错误。超出限制的行也添加到* .rej | 添加:NDB 7.6.2 |
--resume | 如果作业中止(临时错误,用户中断),请 continue 处理尚未处理的行 | 添加:NDB 7.6.2 |
--rowbatch=# | 限制行队列中的行(默认 0 =无限制);如果--input-type 是 random,则必须为 1 或更大 | 添加:NDB 7.6.2 |
--rowbytes=# | 限制行队列中的字节(0 =无限制) | 添加:NDB 7.6.2 |
--state-dir=name | 写入状态文件的位置;当前目录为默认目录 | 添加:NDB 7.6.2 |
--stats | 将与性能相关的选项和内部统计信息保存在* .sto 和* .stt 文件中。即使未使用--keep-state,这些文件也会成功完成 | 添加:NDB 7.6.4 |
--tempdelay=# | 两次临时错误之间睡眠的毫秒数 | 添加:NDB 7.6.2 |
--temperrors=# | 每个执行批处理由于临时错误而导致事务失败的次数; 0table 示任何临时错误都是致命的。此类错误不会导致将任何行写入.rej 文件 | 添加:NDB 7.6.2 |
--verbose , | ||
-v | 启用详细输出 | 添加:NDB 7.6.2 |
Property | Value |
---|---|
Command-Line Format | --abort-on-error |
Introduced | 5.7.18-ndb-7.6.2 |
Type | Boolean |
Default Value | FALSE |
在发生致命错误时转储核心;仅用于调试。
Property | Value |
---|---|
Command-Line Format | --ai-increment=# |
Introduced | 5.7.18-ndb-7.6.2 |
Type | Integer |
Default Value | 1 |
Minimum Value | 1 |
Maximum Value | 4294967295 |
对于具有隐藏主键的 table,请指定自动增量,就像 MySQL 服务器中的auto_increment_increment系统变量一样。
Property | Value |
---|---|
Command-Line Format | --ai-offset=# |
Introduced | 5.7.18-ndb-7.6.2 |
Type | Integer |
Default Value | 1 |
Minimum Value | 1 |
Maximum Value | 4294967295 |
对于具有隐藏主键的 table,请指定自动增量偏移量。与auto_increment_offset系统变量相似。
Property | Value |
---|---|
Command-Line Format | --ai-prefetch-sz=# |
Introduced | 5.7.18-ndb-7.6.2 |
Type | Integer |
Default Value | 1024 |
Minimum Value | 1 |
Maximum Value | 4294967295 |
对于具有隐藏主键的 table,请指定预取的自动增量值的数量。行为类似于ndb_autoincrement_prefetch_sz系统变量在 MySQL Server 中的行为。
Property | Value |
---|---|
Command-Line Format | --connections=# |
Introduced | 5.7.18-ndb-7.6.2 |
Type | Integer |
Default Value | 1 |
Minimum Value | 1 |
Maximum Value | 4294967295 |
要创建的集群连接数。
Property | Value |
---|---|
Command-Line Format | --continue |
Introduced | 5.7.18-ndb-7.6.2 |
Type | Boolean |
Default Value | FALSE |
作业失败时,请 continue 下一个作业。
Property | Value |
---|---|
Command-Line Format | --db-workers=# |
Introduced | 5.7.18-ndb-7.6.2 |
Type | Integer |
默认值(≥5.7.20-ndb-7.6.4) | 4 |
默认值(≥5.7.18-ndb-7.6.2,≤5.7.18-ndb-7.6.3) | 1 |
Minimum Value | 1 |
Maximum Value | 4294967295 |
每个数据节点执行数据库操作的线程数。
Property | Value |
---|---|
Command-Line Format | --errins-type=name |
Introduced | 5.7.18-ndb-7.6.2 |
Type | Enumeration |
Default Value | [none] |
Valid Values | stopjob |
stopall sighup sigint list |
错误插入类型;使用list
作为* name
*值来获取所有可能的值。此选项仅用于测试目的。
Property | Value |
---|---|
Command-Line Format | --errins-delay=# |
Introduced | 5.7.18-ndb-7.6.2 |
Type | Integer |
Default Value | 1000 |
Minimum Value | 0 |
Maximum Value | 4294967295 |
Unit | ms |
错误插入延迟(以毫秒为单位);随机变化被添加。此选项仅用于测试目的。
Property | Value |
---|---|
Command-Line Format | --fields-enclosed-by=char |
Introduced | 5.7.18-ndb-7.6.2 |
Type | String |
Default Value | [none] |
这与FIELDS ENCLOSED BY
选项对LOAD DATA语句所做的工作方式相同,将要插入的字符指定为引号字段值。对于 CSVImporting,这与--fields-optionally-enclosed-by相同。
Property | Value |
---|---|
Command-Line Format | --fields-escaped-by=name |
Introduced | 5.7.18-ndb-7.6.2 |
Type | String |
Default Value | \ |
以与FIELDS ESCAPED BY
选项对 SQL LOAD DATA语句相同的方式指定转义字符。
Property | Value |
---|---|
Command-Line Format | --fields-optionally-enclosed-by=char |
Introduced | 5.7.18-ndb-7.6.2 |
Type | String |
Default Value | [none] |
这与FIELDS OPTIONALLY ENCLOSED BY
选项对LOAD DATA语句所做的工作方式相同,将要插入的字符指定为可选的引号字段值。对于 CSVImporting,这与--fields-enclosed-by相同。
Property | Value |
---|---|
Command-Line Format | --fields-terminated-by=char |
Introduced | 5.7.18-ndb-7.6.2 |
Type | String |
Default Value | \t |
这与LOAD DATA语句的FIELDS TERMINATED BY
选项相同,其作用是指定要插入的字符作为字段分隔符。
Property | Value |
---|---|
Command-Line Format | --idlesleep=# |
Introduced | 5.7.18-ndb-7.6.2 |
Type | Integer |
Default Value | 1 |
Minimum Value | 1 |
Maximum Value | 4294967295 |
Unit | ms |
await 更多工作执行的睡眠毫秒数。
Property | Value |
---|---|
Command-Line Format | --idlespin=# |
Introduced | 5.7.18-ndb-7.6.2 |
Type | Integer |
Default Value | 0 |
Minimum Value | 0 |
Maximum Value | 4294967295 |
睡觉前重试的次数。
Property | Value |
---|---|
Command-Line Format | --ignore-lines=# |
Introduced | 5.7.18-ndb-7.6.2 |
Type | Integer |
Default Value | 0 |
Minimum Value | 0 |
Maximum Value | 4294967295 |
使 ndb_import 忽略 Importing 文件的前* #
*行。这可以用来跳过不包含任何数据的文件头。
Property | Value |
---|---|
Command-Line Format | --input-type=name |
Introduced | 5.7.18-ndb-7.6.2 |
Type | Enumeration |
Default Value | csv |
Valid Values | random |
csv |
设置 Importing 类型的类型。默认值为csv
; random
仅用于测试目的。 。
Property | Value |
---|---|
Command-Line Format | --input-workers=# |
Introduced | 5.7.18-ndb-7.6.2 |
Type | Integer |
默认值(≥5.7.20-ndb-7.6.4) | 4 |
默认值(≥5.7.18-ndb-7.6.2,≤5.7.18-ndb-7.6.3) | 2 |
Minimum Value | 1 |
Maximum Value | 4294967295 |
设置处理 Importing 的线程数。
Property | Value |
---|---|
Command-Line Format | --keep-state |
Introduced | 5.7.20-ndb-7.6.4 |
Type | Boolean |
Default Value | false |
默认情况下,ndb_import 在完成作业时会删除所有状态文件(非空的*.rej
文件除外)。指定此选项(也不需要参数),以强制程序保留所有状态文件。
Property | Value |
---|---|
Command-Line Format | --lines-terminated-by=name |
Introduced | 5.7.18-ndb-7.6.2 |
Type | String |
Default Value | \n |
这与LOAD DATA语句的LINES TERMINATED BY
选项相同,其作用是指定要插入的字符作为行尾。
Property | Value |
---|---|
Command-Line Format | --log-level=# |
Type | Integer |
Default Value | 0 |
Minimum Value | 0 |
Maximum Value | 2 |
在给定级别执行内部日志记录。此选项主要供内部和开发使用。
仅在 NDB 的调试版本中,可以使用此选项将日志记录级别设置为最大 4.
Property | Value |
---|---|
Command-Line Format | --max-rows=# |
Introduced | 5.7.18-ndb-7.6.2 |
Type | Integer |
Default Value | 0 |
Minimum Value | 0 |
Maximum Value | 4294967295 |
Unit | bytes |
仅导入此数量的 Importing 数据行;默认值为 0,将导入所有行。
Property | Value |
---|---|
Command-Line Format | --monitor=# |
Introduced | 5.7.18-ndb-7.6.2 |
Type | Integer |
Default Value | 2 |
Minimum Value | 0 |
Maximum Value | 4294967295 |
Unit | bytes |
如果发生更改(状态,拒绝的行,临时错误),请定期打印正在运行的作业的状态。设置为 0 以禁用此报告。设置为 1 将打印看到的任何更改。较高的值会减少此状态报告的频率。
Property | Value |
---|---|
Command-Line Format | --no-asynch |
Introduced | 5.7.18-ndb-7.6.2 |
Type | Boolean |
Default Value | FALSE |
在单个事务中批量运行数据库操作。
Property | Value |
---|---|
Command-Line Format | --no-hint |
Introduced | 5.7.18-ndb-7.6.2 |
Type | Boolean |
Default Value | FALSE |
不要使用分发键提示来选择数据节点。
Property | Value |
---|---|
Command-Line Format | --opbatch=# |
Introduced | 5.7.18-ndb-7.6.2 |
Type | Integer |
Default Value | 256 |
Minimum Value | 1 |
Maximum Value | 4294967295 |
Unit | bytes |
设置每个执行批处理的操作数(包括 Blob 操作)的限制,从而限制异步事务的数目。
Property | Value |
---|---|
Command-Line Format | --opbytes=# |
Introduced | 5.7.18-ndb-7.6.2 |
Type | Integer |
Default Value | 0 |
Minimum Value | 0 |
Maximum Value | 4294967295 |
Unit | bytes |
设置每个执行批处理的字节数限制。无限制地使用 0.
Property | Value |
---|---|
Command-Line Format | --output-type=name |
Introduced | 5.7.18-ndb-7.6.2 |
Type | Enumeration |
Default Value | ndb |
Valid Values | null |
设置输出类型。 ndb
是默认值。 null
仅用于测试。
Property | Value |
---|---|
Command-Line Format | --output-workers=# |
Introduced | 5.7.18-ndb-7.6.2 |
Type | Integer |
Default Value | 2 |
Minimum Value | 1 |
Maximum Value | 4294967295 |
设置处理输出或中继数据库操作的线程数。
Property | Value |
---|---|
Command-Line Format | --pagesize=# |
Introduced | 5.7.18-ndb-7.6.2 |
Type | Integer |
Default Value | 4096 |
Minimum Value | 1 |
Maximum Value | 4294967295 |
Unit | bytes |
将 I/O 缓冲区对齐到给定的大小。
Property | Value |
---|---|
Command-Line Format | --pagecnt=# |
Introduced | 5.7.18-ndb-7.6.2 |
Type | Integer |
Default Value | 64 |
Minimum Value | 1 |
Maximum Value | 4294967295 |
将 I/O 缓冲区的大小设置为页面大小的倍数。 CSVImporting 工作程序分配的缓冲区大小增加了一倍。
Property | Value |
---|---|
Command-Line Format | --polltimeout=# |
Introduced | 5.7.18-ndb-7.6.2 |
Type | Integer |
Default Value | 1000 |
Minimum Value | 1 |
Maximum Value | 4294967295 |
Unit | ms |
为完成的异步事务设置每次轮询超时;轮询将 continue 进行,直到完成所有轮询或发生错误为止。
Property | Value |
---|---|
Command-Line Format | --rejects=# |
Introduced | 5.7.18-ndb-7.6.2 |
Type | Integer |
Default Value | 0 |
Minimum Value | 0 |
Maximum Value | 4294967295 |
限制数据加载中被拒绝的行(具有永久错误的行)的数量。默认值为 0,这意味着任何拒绝的行都会导致致命错误。导致超出限制的所有行都将添加到.rej
文件中。
此选项施加的限制在当前运行期间有效。为此,使用--resume重新启动的运行被视为“新”运行。
Property | Value |
---|---|
Command-Line Format | --resume |
Introduced | 5.7.18-ndb-7.6.2 |
Type | Boolean |
Default Value | FALSE |
如果作业被中止(由于临时的 db 错误或由于用户中断),请 continue 处理尚未处理的行。
Property | Value |
---|---|
Command-Line Format | --rowbatch=# |
Introduced | 5.7.18-ndb-7.6.2 |
Type | Integer |
Default Value | 0 |
Minimum Value | 0 |
Maximum Value | 4294967295 |
Unit | rows |
设置每个行队列的行数限制。无限制地使用 0.
Property | Value |
---|---|
Command-Line Format | --rowbytes=# |
Introduced | 5.7.18-ndb-7.6.2 |
Type | Integer |
Default Value | 262144 |
Minimum Value | 0 |
Maximum Value | 4294967295 |
Unit | bytes |
设置每个行队列的字节数限制。无限制地使用 0.
Property | Value |
---|---|
Command-Line Format | --stats |
Introduced | 5.7.20-ndb-7.6.4 |
Type | Boolean |
Default Value | false |
将有关性能和其他内部统计信息的选项的信息保存在名为*.sto
和*.stt
的文件中。这些文件将始终保持成功完成的状态(即使也未指定--keep-state)。
Property | Value |
---|---|
Command-Line Format | --state-dir=name |
Introduced | 5.7.18-ndb-7.6.2 |
Type | String |
Default Value | . |
在哪里写入由程序运行产生的状态文件(tbl_name.map
,tbl_name.rej
,tbl_name.res
和tbl_name.stt
);默认为当前目录。
Property | Value |
---|---|
Command-Line Format | --tempdelay=# |
Introduced | 5.7.18-ndb-7.6.2 |
Type | Integer |
Default Value | 10 |
Minimum Value | 0 |
Maximum Value | 4294967295 |
Unit | ms |
在临时错误之间睡眠的毫秒数。
Property | Value |
---|---|
Command-Line Format | --temperrors=# |
Introduced | 5.7.18-ndb-7.6.2 |
Type | Integer |
Default Value | 0 |
Minimum Value | 0 |
Maximum Value | 4294967295 |
每个执行批处理由于临时错误导致事务失败的次数。默认值为 0,这意味着任何临时错误都是致命的。临时错误不会导致将任何行添加到.rej
文件。
Property | Value |
---|---|
Command-Line Format | --verbose |
Introduced | 5.7.18-ndb-7.6.2 |
类型(≥5.7.20-ndb-7.6.4) | Boolean |
类型(≥5.7.18-ndb-7.6.2,≤5.7.18-ndb-7.6.3) | Integer |
默认值(≥5.7.20-ndb-7.6.4) | false |
默认值(≥5.7.18-ndb-7.6.2,≤5.7.18-ndb-7.6.3) | 0 |
Minimum Value | 0 |
Maximum Value | 2 |
NDB 7.6.4 和更高版本:启用详细输出。
以前,此选项控制调试消息的内部日志记录级别。在 NDB 7.6.4 和更高版本中,为此使用--log-level选项。
与LOAD DATA一样,无论是使用选择进入...输出还是通过其他方式,用于字段和行格式设置的选项都与用于创建 CSV 文件的选项非常匹配。没有与LOAD DATA语句STARTING WITH
选项等效的选项。
NDB 7.6.2 中添加了ndb_import。