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_tablemyndb假设您已经以适当的特权以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 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_incrementMySQL服务器中的系统变量一样。
- --ai-offset=- #- 属性 - 值 - 命令行格式 - --ai-offset=# - 类型 - 整数 - 默认值 - 1 - 最低值 - 1 - 最大值 - 4294967295 - 对于具有隐藏主键的表,请指定自动增量偏移量。类似于 - auto_increment_offset系统变量。
- --ai-prefetch-sz=- #- 属性 - 值 - 命令行格式 - --ai-prefetch-sz=# - 类型 - 整数 - 默认值 - 1024 - 最低值 - 1 - 最大值 - 4294967295 - 对于具有隐藏主键的表,请指定预取的自动增量值的数量。行为类似于 - ndb_autoincrement_prefetch_szMySQL服务器中的系统变量。
- --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选项对SQL- LOAD 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。
