21.4.14 ndb_import —将 CSV 数据导入 NDB

ndb_import使用 NDB API 将 CSV 格式的数据(例如mysqldump --tab生成的数据)直接导入NDBndb_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 复制为NDBtable,请使用mysqlClient 端执行选择进入 Files语句以将现有 table 导出到 CSV 文件,然后执行创建 table 喜欢语句以创建新 table 与现有 table 具有相同结构的 table,然后对新 table 执行ALTER TABLE ... ENGINE = NDB;之后,从系统 Shell 调用ndb_import将数据加载到新的NDBtable 中。例如,假设您已经以具有适当特权的 MySQL 用户身份登录,则可以将名为myinnodb的数据库中现有的InnoDBtablemyinnodb_table导出到名为myndb的数据库中的NDBtablemyndb_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 程序的命令行选项

FormatDescription添加,不建议使用或删除
--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=nameImporting 类型:随机或 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
  • --abort-on-error

PropertyValue
Command-Line Format--abort-on-error
Introduced5.7.18-ndb-7.6.2
TypeBoolean
Default ValueFALSE

在发生致命错误时转储核心;仅用于调试。

  • --ai-increment = #

PropertyValue
Command-Line Format--ai-increment=#
Introduced5.7.18-ndb-7.6.2
TypeInteger
Default Value1
Minimum Value1
Maximum Value4294967295

对于具有隐藏主键的 table,请指定自动增量,就像 MySQL 服务器中的auto_increment_increment系统变量一样。

  • --ai-offset = #

PropertyValue
Command-Line Format--ai-offset=#
Introduced5.7.18-ndb-7.6.2
TypeInteger
Default Value1
Minimum Value1
Maximum Value4294967295

对于具有隐藏主键的 table,请指定自动增量偏移量。与auto_increment_offset系统变量相似。

  • --ai-prefetch-sz = #

PropertyValue
Command-Line Format--ai-prefetch-sz=#
Introduced5.7.18-ndb-7.6.2
TypeInteger
Default Value1024
Minimum Value1
Maximum Value4294967295

对于具有隐藏主键的 table,请指定预取的自动增量值的数量。行为类似于ndb_autoincrement_prefetch_sz系统变量在 MySQL Server 中的行为。

  • --connections = #

PropertyValue
Command-Line Format--connections=#
Introduced5.7.18-ndb-7.6.2
TypeInteger
Default Value1
Minimum Value1
Maximum Value4294967295

要创建的集群连接数。

  • --continue

PropertyValue
Command-Line Format--continue
Introduced5.7.18-ndb-7.6.2
TypeBoolean
Default ValueFALSE

作业失败时,请 continue 下一个作业。

  • --db-workers = #

PropertyValue
Command-Line Format--db-workers=#
Introduced5.7.18-ndb-7.6.2
TypeInteger
默认值(≥5.7.20-ndb-7.6.4)4
默认值(≥5.7.18-ndb-7.6.2,≤5.7.18-ndb-7.6.3)1
Minimum Value1
Maximum Value4294967295

每个数据节点执行数据库操作的线程数。

  • --errins-type = name

PropertyValue
Command-Line Format--errins-type=name
Introduced5.7.18-ndb-7.6.2
TypeEnumeration
Default Value[none]
Valid Valuesstopjob

stopall
sighup
sigint
list

错误插入类型;使用list作为* name *值来获取所有可能的值。此选项仅用于测试目的。

  • --errins-delay = #

PropertyValue
Command-Line Format--errins-delay=#
Introduced5.7.18-ndb-7.6.2
TypeInteger
Default Value1000
Minimum Value0
Maximum Value4294967295
Unitms

错误插入延迟(以毫秒为单位);随机变化被添加。此选项仅用于测试目的。

  • --fields-enclosed-by = char

PropertyValue
Command-Line Format--fields-enclosed-by=char
Introduced5.7.18-ndb-7.6.2
TypeString
Default Value[none]

这与FIELDS ENCLOSED BY选项对LOAD DATA语句所做的工作方式相同,将要插入的字符指定为引号字段值。对于 CSVImporting,这与--fields-optionally-enclosed-by相同。

  • --fields-escaped-by = name

PropertyValue
Command-Line Format--fields-escaped-by=name
Introduced5.7.18-ndb-7.6.2
TypeString
Default Value\

以与FIELDS ESCAPED BY选项对 SQL LOAD DATA语句相同的方式指定转义字符。

  • --fields-optionally-enclosed-by = char

PropertyValue
Command-Line Format--fields-optionally-enclosed-by=char
Introduced5.7.18-ndb-7.6.2
TypeString
Default Value[none]

这与FIELDS OPTIONALLY ENCLOSED BY选项对LOAD DATA语句所做的工作方式相同,将要插入的字符指定为可选的引号字段值。对于 CSVImporting,这与--fields-enclosed-by相同。

  • --fields-terminated-by = char

PropertyValue
Command-Line Format--fields-terminated-by=char
Introduced5.7.18-ndb-7.6.2
TypeString
Default Value\t

这与LOAD DATA语句的FIELDS TERMINATED BY选项相同,其作用是指定要插入的字符作为字段分隔符。

  • --idlesleep = #

PropertyValue
Command-Line Format--idlesleep=#
Introduced5.7.18-ndb-7.6.2
TypeInteger
Default Value1
Minimum Value1
Maximum Value4294967295
Unitms

await 更多工作执行的睡眠毫秒数。

  • --idlespin = #

PropertyValue
Command-Line Format--idlespin=#
Introduced5.7.18-ndb-7.6.2
TypeInteger
Default Value0
Minimum Value0
Maximum Value4294967295

睡觉前重试的次数。

  • --ignore-lines = #

PropertyValue
Command-Line Format--ignore-lines=#
Introduced5.7.18-ndb-7.6.2
TypeInteger
Default Value0
Minimum Value0
Maximum Value4294967295

使 ndb_import 忽略 Importing 文件的前* # *行。这可以用来跳过不包含任何数据的文件头。

  • --input-type = name

PropertyValue
Command-Line Format--input-type=name
Introduced5.7.18-ndb-7.6.2
TypeEnumeration
Default Valuecsv
Valid Valuesrandom

csv

设置 Importing 类型的类型。默认值为csv; random仅用于测试目的。 。

  • --input-workers = #

PropertyValue
Command-Line Format--input-workers=#
Introduced5.7.18-ndb-7.6.2
TypeInteger
默认值(≥5.7.20-ndb-7.6.4)4
默认值(≥5.7.18-ndb-7.6.2,≤5.7.18-ndb-7.6.3)2
Minimum Value1
Maximum Value4294967295

设置处理 Importing 的线程数。

  • --keep-state

PropertyValue
Command-Line Format--keep-state
Introduced5.7.20-ndb-7.6.4
TypeBoolean
Default Valuefalse

默认情况下,ndb_import 在完成作业时会删除所有状态文件(非空的*.rej文件除外)。指定此选项(也不需要参数),以强制程序保留所有状态文件。

  • --lines-terminated-by = name

PropertyValue
Command-Line Format--lines-terminated-by=name
Introduced5.7.18-ndb-7.6.2
TypeString
Default Value\n

这与LOAD DATA语句的LINES TERMINATED BY选项相同,其作用是指定要插入的字符作为行尾。

  • --log-level = #

PropertyValue
Command-Line Format--log-level=#
TypeInteger
Default Value0
Minimum Value0
Maximum Value2

在给定级别执行内部日志记录。此选项主要供内部和开发使用。

仅在 NDB 的调试版本中,可以使用此选项将日志记录级别设置为最大 4.

  • --max-rows = #

PropertyValue
Command-Line Format--max-rows=#
Introduced5.7.18-ndb-7.6.2
TypeInteger
Default Value0
Minimum Value0
Maximum Value4294967295
Unitbytes

仅导入此数量的 Importing 数据行;默认值为 0,将导入所有行。

  • --monitor = #

PropertyValue
Command-Line Format--monitor=#
Introduced5.7.18-ndb-7.6.2
TypeInteger
Default Value2
Minimum Value0
Maximum Value4294967295
Unitbytes

如果发生更改(状态,拒绝的行,临时错误),请定期打印正在运行的作业的状态。设置为 0 以禁用此报告。设置为 1 将打印看到的任何更改。较高的值会减少此状态报告的频率。

  • --no-asynch

PropertyValue
Command-Line Format--no-asynch
Introduced5.7.18-ndb-7.6.2
TypeBoolean
Default ValueFALSE

在单个事务中批量运行数据库操作。

  • --no-hint

PropertyValue
Command-Line Format--no-hint
Introduced5.7.18-ndb-7.6.2
TypeBoolean
Default ValueFALSE

不要使用分发键提示来选择数据节点。

  • --opbatch = #

PropertyValue
Command-Line Format--opbatch=#
Introduced5.7.18-ndb-7.6.2
TypeInteger
Default Value256
Minimum Value1
Maximum Value4294967295
Unitbytes

设置每个执行批处理的操作数(包括 Blob 操作)的限制,从而限制异步事务的数目。

  • --opbytes = #

PropertyValue
Command-Line Format--opbytes=#
Introduced5.7.18-ndb-7.6.2
TypeInteger
Default Value0
Minimum Value0
Maximum Value4294967295
Unitbytes

设置每个执行批处理的字节数限制。无限制地使用 0.

  • --output-type = name

PropertyValue
Command-Line Format--output-type=name
Introduced5.7.18-ndb-7.6.2
TypeEnumeration
Default Valuendb
Valid Valuesnull

设置输出类型。 ndb是默认值。 null仅用于测试。

  • --output-workers = #

PropertyValue
Command-Line Format--output-workers=#
Introduced5.7.18-ndb-7.6.2
TypeInteger
Default Value2
Minimum Value1
Maximum Value4294967295

设置处理输出或中继数据库操作的线程数。

  • --pagesize = #

PropertyValue
Command-Line Format--pagesize=#
Introduced5.7.18-ndb-7.6.2
TypeInteger
Default Value4096
Minimum Value1
Maximum Value4294967295
Unitbytes

将 I/O 缓冲区对齐到给定的大小。

  • --pagecnt = #

PropertyValue
Command-Line Format--pagecnt=#
Introduced5.7.18-ndb-7.6.2
TypeInteger
Default Value64
Minimum Value1
Maximum Value4294967295

将 I/O 缓冲区的大小设置为页面大小的倍数。 CSVImporting 工作程序分配的缓冲区大小增加了一倍。

  • --polltimeout = #

PropertyValue
Command-Line Format--polltimeout=#
Introduced5.7.18-ndb-7.6.2
TypeInteger
Default Value1000
Minimum Value1
Maximum Value4294967295
Unitms

为完成的异步事务设置每次轮询超时;轮询将 continue 进行,直到完成所有轮询或发生错误为止。

  • --rejects = #

PropertyValue
Command-Line Format--rejects=#
Introduced5.7.18-ndb-7.6.2
TypeInteger
Default Value0
Minimum Value0
Maximum Value4294967295

限制数据加载中被拒绝的行(具有永久错误的行)的数量。默认值为 0,这意味着任何拒绝的行都会导致致命错误。导致超出限制的所有行都将添加到.rej文件中。

此选项施加的限制在当前运行期间有效。为此,使用--resume重新启动的运行被视为“新”运行。

  • --resume

PropertyValue
Command-Line Format--resume
Introduced5.7.18-ndb-7.6.2
TypeBoolean
Default ValueFALSE

如果作业被中止(由于临时的 db 错误或由于用户中断),请 continue 处理尚未处理的行。

  • --rowbatch = #

PropertyValue
Command-Line Format--rowbatch=#
Introduced5.7.18-ndb-7.6.2
TypeInteger
Default Value0
Minimum Value0
Maximum Value4294967295
Unitrows

设置每个行队列的行数限制。无限制地使用 0.

  • --rowbytes = #

PropertyValue
Command-Line Format--rowbytes=#
Introduced5.7.18-ndb-7.6.2
TypeInteger
Default Value262144
Minimum Value0
Maximum Value4294967295
Unitbytes

设置每个行队列的字节数限制。无限制地使用 0.

  • --stats

PropertyValue
Command-Line Format--stats
Introduced5.7.20-ndb-7.6.4
TypeBoolean
Default Valuefalse

将有关性能和其他内部统计信息的选项的信息保存在名为*.sto*.stt的文件中。这些文件将始终保持成功完成的状态(即使也未指定--keep-state)。

  • --state-dir = name

PropertyValue
Command-Line Format--state-dir=name
Introduced5.7.18-ndb-7.6.2
TypeString
Default Value.

在哪里写入由程序运行产生的状态文件(tbl_name.maptbl_name.rejtbl_name.restbl_name.stt);默认为当前目录。

  • --tempdelay = #

PropertyValue
Command-Line Format--tempdelay=#
Introduced5.7.18-ndb-7.6.2
TypeInteger
Default Value10
Minimum Value0
Maximum Value4294967295
Unitms

在临时错误之间睡眠的毫秒数。

  • --temperrors = #

PropertyValue
Command-Line Format--temperrors=#
Introduced5.7.18-ndb-7.6.2
TypeInteger
Default Value0
Minimum Value0
Maximum Value4294967295

每个执行批处理由于临时错误导致事务失败的次数。默认值为 0,这意味着任何临时错误都是致命的。临时错误不会导致将任何行添加到.rej文件。

  • --verbose , -v

PropertyValue
Command-Line Format--verbose
Introduced5.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 Value0
Maximum Value2

NDB 7.6.4 和更高版本:启用详细输出。

以前,此选项控制调试消息的内部日志记录级别。在 NDB 7.6.4 和更高版本中,为此使用--log-level选项。

LOAD DATA一样,无论是使用选择进入...输出还是通过其他方式,用于字段和行格式设置的选项都与用于创建 CSV 文件的选项非常匹配。没有与LOAD DATA语句STARTING WITH选项等效的选项。

NDB 7.6.2 中添加了ndb_import