• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • ndb_import —将CSV数据导入NDB

    ndb_import使用NDB API直接将CSV格式的数据(例如 mysqldump生成的数据)--tab导入NDBndb_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用户身份登录,则在如下所示的数据库中登录:

    1. 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或其他方法停止它。

    2. 在系统外壳中:

      # 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程序的命令行选项

    格式描述添加,不建议使用或删除

    --abort-on-error

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

    (在所有基于MySQL 8.0的版本中受支持)

    --ai-increment=#

    对于具有隐藏PK的表,请指定自动增量。见mysqld

    (在所有基于MySQL 8.0的版本中受支持)

    --ai-offset=#

    对于具有隐藏PK的表,请指定自动增量偏移量。见mysqld

    (在所有基于MySQL 8.0的版本中受支持)

    --ai-prefetch-sz=#

    对于具有隐藏PK的表,请指定预取的自动增量值的数量。见mysqld

    (在所有基于MySQL 8.0的版本中受支持)

    --connections=#

    要创建的集群连接数

    (在所有基于MySQL 8.0的版本中受支持)

    --continue

    作业失败时,继续下一个作业

    (在所有基于MySQL 8.0的版本中受支持)

    --db-workers=#

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

    (在所有基于MySQL 8.0的版本中受支持)

    --errins-type=name

    错误插入类型,用于测试;使用“列表”获取所有可能的值

    (在所有基于MySQL 8.0的版本中受支持)

    --errins-delay=#

    错误插入延迟(以毫秒为单位);添加随机变化

    (在所有基于MySQL 8.0的版本中受支持)

    --fields-enclosed-by=char

    与LOAD DATA语句的FIELDS ENCLOSED BY选项相同。对于CSV输入,这与使用--fields-optionally-enclosed-by相同

    (在所有基于MySQL 8.0的版本中受支持)

    --fields-escaped-by=name

    与LOAD DATA语句的FIELDS ESCAPED BY选项相同

    (在所有基于MySQL 8.0的版本中受支持)

    --fields-optionally-enclosed-by=char

    与LOAD DATA语句的FIELDS OPTIONALLY ENCLOSED BY选项相同

    (在所有基于MySQL 8.0的版本中受支持)

    --fields-terminated-by=char

    与LOAD DATA语句的FIELDS TERMINATED BY选项相同

    (在所有基于MySQL 8.0的版本中受支持)

    --idlesleep=#

    等待更多工作的睡眠时间(毫秒)

    (在所有基于MySQL 8.0的版本中受支持)

    --idlespin=#

    空闲睡眠前重试的次数

    (在所有基于MySQL 8.0的版本中受支持)

    --ignore-lines=#

    忽略输入文件中的前#行。用于跳过非数据头

    (在所有基于MySQL 8.0的版本中受支持)

    --input-type=name

    输入类型:随机或CSV

    (在所有基于MySQL 8.0的版本中受支持)

    --input-workers=#

    处理输入的线程数。如果--input-type为csv,则必须为2或更大

    (在所有基于MySQL 8.0的版本中受支持)

    --keep-state

    状态文件(非空*.rej文件除外)通常在作业完成时删除。使用此选项将导致保留所有状态文件

    (在所有基于MySQL 8.0的版本中受支持)

    --lines-terminated-by=name

    与LOAD DATA语句的LINES TERMINATED BY选项相同

    (在所有基于MySQL 8.0的版本中受支持)

    --max-rows=#

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

    (在所有基于MySQL 8.0的版本中受支持)

    --monitor=#

    如果发生了某些更改(状态,拒绝的行,临时错误),请定期打印正在运行的作业的状态。值0禁用。值1将打印看到的任何更改。较高的值将状态打印成指数减少,直至达到预定义的极限

    (在所有基于MySQL 8.0的版本中受支持)

    --no-asynch

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

    (在所有基于MySQL 8.0的版本中受支持)

    --no-hint

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

    (在所有基于MySQL 8.0的版本中受支持)

    --opbatch=#

    数据库执行批处理是发送到NDB内核的一组事务和操作。此选项限制数据库执行批处理中的NDB操作(包括Blob操作)。因此,它也限制了异步交易的数量。值0无效

    (在所有基于MySQL 8.0的版本中受支持)

    --opbytes=#

    限制执行批处理中的字节数(默认0 =无限制)

    (在所有基于MySQL 8.0的版本中受支持)

    --output-type=name

    输出类型:默认为ndb,测试时使用null

    (在所有基于MySQL 8.0的版本中受支持)

    --output-workers=#

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

    (在所有基于MySQL 8.0的版本中受支持)

    --pagesize=#

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

    (在所有基于MySQL 8.0的版本中受支持)

    --pagecnt=#

    I / O缓冲区的大小为页面大小的倍数。CSV输入工作程序分配一个双倍大小的缓冲区

    (在所有基于MySQL 8.0的版本中受支持)

    --polltimeout=#

    已完成异步事务的每次轮询超时;轮询将继续进行,直到完成所有轮询或发生错误

    (在所有基于MySQL 8.0的版本中受支持)

    --rejects=#

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

    (在所有基于MySQL 8.0的版本中受支持)

    --resume

    如果作业中止(临时错误,用户中断),请继续处理尚未处理的行

    (在所有基于MySQL 8.0的版本中受支持)

    --rowbatch=#

    限制行队列中的行(默认0 =无限制);如果--input-type是random,则必须为1或更大

    (在所有基于MySQL 8.0的版本中受支持)

    --rowbytes=#

    限制行队列中的字节(0 =无限制)

    (在所有基于MySQL 8.0的版本中受支持)

    --state-dir=name

    写入状态文件的位置;当前目录为默认目录

    (在所有基于MySQL 8.0的版本中受支持)

    --stats

    将与性能相关的选项和内部统计信息保存在*.sto和*.stt文件中。即使未使用--keep-state,这些文件也会成功完成

    (在所有基于MySQL 8.0的版本中受支持)

    --tempdelay=#

    两次临时错误之间睡眠的毫秒数

    (在所有基于MySQL 8.0的版本中受支持)

    --temperrors=#

    每个执行批处理由于临时错误而导致事务失败的次数;0表示任何临时错误都是致命的。此类错误不会导致将任何行写入.rej文件

    (在所有基于MySQL 8.0的版本中受支持)

    --verbose

    -v

    启用详细输出

    (在所有基于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选项对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.maptbl_name.rejtbl_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