文档首页
MySQL 9.0 参考手册
相关文档 下载本手册
PDF (US Ltr) - 40.0Mb
PDF (A4) - 40.1Mb
手册页 (TGZ) - 258.2Kb
手册页 (Zip) - 365.3Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 9.0 参考手册  /  ...  /  ndb_import — 将 CSV 数据导入 NDB

25.5.13 ndb_import — 将 CSV 数据导入 NDB

ndb_import 将 CSV 格式的数据(例如由 mysqldump --tab 生成的)直接导入到 NDB 中,使用 NDB API。 ndb_import 需要连接到 NDB 管理服务器(ndb_mgmd)才能正常工作;它不需要连接到 MySQL 服务器。

用法

ndb_import db_name file_name options

ndb_import 需要两个参数。 db_name 是包含要导入数据的表的数据库的名称;file_name 是要读取数据的 CSV 文件的名称;如果该文件不在当前目录中,则必须包含该文件的路径。文件名必须与表名匹配;文件的扩展名(如果有)将不被考虑。 ndb_import 支持的选项包括用于指定字段分隔符、转义符和行终止符的选项,这些选项将在本节后面介绍。

ndb_import 会拒绝从 CSV 文件中读取的任何空行,除非导入单个列,在这种情况下,可以将空值用作列值。 ndb_import 的处理方式与 LOAD DATA 语句相同。

ndb_import 必须能够连接到 NDB Cluster 管理服务器;因此,集群 config.ini 文件中必须存在一个未使用的 [api] 槽。

要复制一个使用不同存储引擎(例如 InnoDB)的现有表作为 NDB 表,请使用 mysql 客户端执行 SELECT INTO OUTFILE 语句以将现有表导出到 CSV 文件,然后执行 CREATE TABLE LIKE 语句以创建结构与现有表相同的表,然后在新表上执行 ALTER TABLE ... ENGINE=NDB;完成此操作后,从系统 shell 中调用 ndb_import 将数据加载到新的 NDB 表中。例如,现有数据库名为 myinnodb 中名为 myinnodb_tableInnoDB 表可以导出到名为 myndb 的数据库中的 myndb_table 中,如下所示,假设您已以具有相应权限的 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
    $>

    创建目标数据库和表后,就不再需要运行 mysqld 了。如果您愿意,可以使用 mysqladmin shutdown 或其他方法在继续之前停止它。

  2. 在系统 shell 中

    # 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 的所有选项都显示在下面的表格中。表格下方提供了其他描述。

  • --abort-on-error

    命令行格式 --abort-on-error

    在任何致命错误时转储核心文件;仅用于调试。

  • --ai-increment=#

    命令行格式 --ai-increment=#
    类型 整数
    默认值 1
    最小值 1
    最大值 4294967295

    对于具有隐藏主键的表,请指定自增增量,类似于 MySQL 服务器中的 auto_increment_increment 系统变量。

  • --ai-offset=#

    命令行格式 --ai-offset=#
    类型 整数
    默认值 1
    最小值 1
    最大值 4294967295

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

  • --ai-prefetch-sz=#

    命令行格式 --ai-prefetch-sz=#
    类型 整数
    默认值 1024
    最小值 1
    最大值 4294967295

    对于具有隐藏主键的表,请指定预取的自增值的个数。与 MySQL 服务器中的 ndb_autoincrement_prefetch_sz 系统变量的行为相同。

  • --character-sets-dir

    命令行格式 --character-sets-dir=path

    包含字符集的目录。

  • --connections=#

    命令行格式 --connections=#
    类型 整数
    默认值 1
    最小值 1
    最大值 4294967295

    要创建的集群连接数。

  • --connect-retries

    命令行格式 --connect-retries=#
    类型 整数
    默认值 12
    最小值 0
    最大值 12

    放弃连接之前要重试的次数。

  • --connect-retry-delay

    命令行格式 --connect-retry-delay=#
    类型 整数
    默认值 5
    最小值 0
    最大值 5

    尝试联系管理服务器之间等待的秒数。

  • --connect-string

    命令行格式 --connect-string=connection_string
    类型 字符串
    默认值 [无]

    --ndb-connectstring 相同。

  • --continue

    命令行格式 --continue

    作业失败时,继续执行下一个作业。

  • --core-file

    命令行格式 --core-file

    在错误时写入核心文件;用于调试。

  • --csvopt=string

    命令行格式 --csvopt=opts
    类型 字符串
    默认值 [无]

    提供了一种设置典型 CSV 导入选项的快捷方法。此选项的参数是一个字符串,它包含以下一个或多个参数

    • c: 字段以逗号结尾

    • d: 使用默认值,除非被另一个参数覆盖

    • n: 行以 \n 结尾

    • q: 字段可以选择用双引号字符 (") 括起来

    • r: 行以 \r 结尾

    此选项中使用的参数顺序处理方式是,最右侧的参数始终优先于同一参数值中已使用的任何可能冲突的参数。这也适用于给定参数的任何重复实例。

    此选项旨在用于在难以传输转义符或引号的条件下进行测试。

  • --db-workers=#

    命令行格式 --db-workers=#
    类型 整数
    默认值 4
    最小值 1
    最大值 4294967295

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

  • --defaults-file

    命令行格式 --defaults-file=path
    类型 字符串
    默认值 [无]

    仅从给定文件中读取默认选项。

  • --defaults-extra-file

    命令行格式 --defaults-extra-file=path
    类型 字符串
    默认值 [无]

    在读取全局文件后读取给定文件。

  • --defaults-group-suffix

    命令行格式 --defaults-group-suffix=string
    类型 字符串
    默认值 [无]

    也读取带有 concat(group, suffix) 的组。

  • --errins-type=name

    命令行格式 --errins-type=name
    类型 枚举
    默认值 [无]
    有效值

    stopjob

    stopall

    sighup

    sigint

    list

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

  • --errins-delay=#

    命令行格式 --errins-delay=#
    类型 整数
    默认值 1000
    最小值 0
    最大值 4294967295
    单位 ms

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

  • --fields-enclosed-by=char

    命令行格式 --fields-enclosed-by=char
    类型 字符串
    默认值 [无]

    此选项的工作方式与 LOAD DATA 语句中的 FIELDS ENCLOSED BY 选项相同,它指定一个字符作为引用字段值的解释。对于 CSV 输入,这与 --fields-optionally-enclosed-by 相同。

  • --fields-escaped-by=name

    命令行格式 --fields-escaped-by=char
    类型 字符串
    默认值 \

    指定转义字符,与 SQL LOAD DATA 语句中的 FIELDS ESCAPED BY 选项相同。

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

    命令行格式 --fields-optionally-enclosed-by=char
    类型 字符串
    默认值 [无]

    此选项的工作方式与 LOAD DATA 语句中的 FIELDS OPTIONALLY ENCLOSED BY 选项相同,指定一个字符作为可选的字段值引号。对于 CSV 输入,这与 --fields-enclosed-by 相同。

  • --fields-terminated-by=char

    命令行格式 --fields-terminated-by=char
    类型 字符串
    默认值 \t

    此选项的工作方式与 LOAD DATA 语句中的 FIELDS TERMINATED BY 选项相同,指定一个字符作为字段分隔符。

  • --help

    命令行格式 --help

    显示帮助文本并退出。

  • --idlesleep=#

    命令行格式 --idlesleep=#
    类型 整数
    默认值 1
    最小值 1
    最大值 4294967295
    单位 ms

    等待更多工作执行的休眠毫秒数。

  • --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

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

  • --lines-terminated-by=name

    命令行格式 --lines-terminated-by=char
    类型 字符串
    默认值 \n

    此选项的工作方式与 LOAD DATA 语句中的 LINES TERMINATED BY 选项相同,指定一个字符作为行尾。

  • --log-level=#

    命令行格式 --log-level=#
    类型 整数
    默认值 0
    最小值 0
    最大值 2

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

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

  • --login-path

    命令行格式 --login-path=path
    类型 字符串
    默认值 [无]

    从登录文件中读取给定的路径。

  • --no-login-paths

    命令行格式 --no-login-paths

    跳过从登录路径文件中读取选项。

  • --max-rows=#

    命令行格式 --max-rows=#
    类型 整数
    默认值 0
    最小值 0
    最大值 4294967295
    单位 bytes

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

  • --missing-ai-column

    命令行格式 --missing-ai-column='name'
    类型 布尔值
    默认值 FALSE

    此选项可以在导入单个表或多个表时使用。使用时,它表示要导入的 CSV 文件不包含任何 AUTO_INCREMENT 列的值,并且 ndb_import 应该提供这些值;如果使用此选项并且 AUTO_INCREMENT 列包含任何值,则导入操作无法继续。

  • --monitor=#

    命令行格式 --monitor=#
    类型 整数
    默认值 2
    最小值 0
    最大值 4294967295
    单位 bytes

    如果运行的作业状态发生变化(状态、拒绝的行、临时错误),则定期打印状态。设置为 0 可禁用此报告。设置为 1 将打印看到的任何更改。更高的值将降低此状态报告的频率。

  • --ndb-connectstring

    命令行格式 --ndb-connectstring=connection_string
    类型 字符串
    默认值 [无]

    设置连接到 ndb_mgmd 的连接字符串。语法:[nodeid=id;][host=]hostname[:port]。覆盖 NDB_CONNECTSTRINGmy.cnf 中的条目。

  • --ndb-mgm-tls

    命令行格式 --ndb-mgm-tls=level
    类型 枚举
    默认值 relaxed
    有效值

    relaxed

    strict

    设置连接到管理服务器所需的 TLS 支持级别;relaxedstrict 之一。 relaxed(默认值)表示尝试建立 TLS 连接,但不需要成功; strict 表示连接需要 TLS。

  • --ndb-mgmd-host

    命令行格式 --ndb-mgmd-host=connection_string
    类型 字符串
    默认值 [无]

    --ndb-connectstring 相同。

  • --ndb-nodeid

    命令行格式 --ndb-nodeid=#
    类型 整数
    默认值 [无]

    设置此节点的节点 ID,覆盖由 --ndb-connectstring 设置的任何 ID。

  • --ndb-optimized-node-selection

    命令行格式 --ndb-optimized-node-selection

    为选择事务节点启用优化。默认情况下启用;使用 --skip-ndb-optimized-node-selection 禁用。

  • --ndb-tls-search-path

    命令行格式 --ndb-tls-search-path=list
    类型 路径名
    默认值(Unix) $HOME/ndb-tls
    默认值(Windows) $HOMEDIR/ndb-tls

    指定要搜索 CA 文件的目录列表。在 Unix 平台上,目录名用冒号 (:) 分隔;在 Windows 系统上,分号 (;) 作为分隔符。目录引用可以是相对的或绝对的;它可以包含一个或多个环境变量,每个环境变量都用前缀美元符号 ($) 表示,并在使用前进行扩展。

    搜索从最左边的命名目录开始,从左到右进行,直到找到文件。空字符串表示空搜索路径,这会导致所有搜索失败。由单个点 (.) 组成的字符串表示搜索路径仅限于当前工作目录。

    如果没有提供搜索路径,则使用编译时默认值。此值取决于使用的平台:在 Windows 上,这是 \ndb-tls;在其他平台(包括 Linux)上,它是 $HOME/ndb-tls。这可以通过使用 -DWITH_NDB_TLS_SEARCH_PATH 编译 NDB Cluster 来覆盖。

  • --no-asynch

    命令行格式 --no-asynch

    以批处理方式运行数据库操作,在单个事务中运行。

  • --no-defaults

    命令行格式 --no-defaults

    不从除登录文件之外的任何选项文件中读取默认选项。

  • --no-hint

    命令行格式 --no-hint

    不使用分布式键提示来选择数据节点。

  • --opbatch=#

    命令行格式 --opbatch=#
    类型 整数
    默认值 256
    最小值 1
    最大值 4294967295
    单位 bytes

    设置每个执行批次的操作(包括 blob 操作)的数量限制,从而限制异步事务的数量。

  • --opbytes=#

    命令行格式 --opbytes=#
    类型 整数
    默认值 0
    最小值 0
    最大值 4294967295
    单位 bytes

    设置每个执行批次的字节数限制。使用 0 表示无限制。

  • --output-type=name

    命令行格式 --output-type=name
    类型 枚举
    默认值 ndb
    有效值 null

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

  • --output-workers=#

    命令行格式 --output-workers=#
    类型 整数
    默认值 2
    最小值 1
    最大值 4294967295

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

  • --pagesize=#

    命令行格式 --pagesize=#
    类型 整数
    默认值 4096
    最小值 1
    最大值 4294967295
    单位 bytes

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

  • --pagecnt=#

    命令行格式 --pagecnt=#
    类型 整数
    默认值 64
    最小值 1
    最大值 4294967295

    将 I/O 缓冲区的大小设置为页面大小的倍数。CSV 输入工作程序分配的缓冲区大小加倍。

  • --polltimeout=#

    命令行格式 --polltimeout=#
    类型 整数
    默认值 1000
    最小值 1
    最大值 4294967295
    单位 ms

    为已完成的异步事务设置每个轮询的超时时间;轮询将持续进行,直到所有轮询完成,或直到发生错误。

  • --print-defaults

    命令行格式 --print-defaults

    打印程序参数列表并退出。

  • --rejects=#

    命令行格式 --rejects=#
    类型 整数
    默认值 0
    最小值 0
    最大值 4294967295

    限制数据加载中拒绝的行数(出现永久性错误的行)。默认值为 0,表示任何被拒绝的行都会导致致命错误。任何导致超出限制的行都会被添加到 .rej 文件中。

    此选项施加的限制对当前运行有效。使用 --resume 重新启动的运行被视为此目的的 新的 运行。

  • --resume

    命令行格式 --resume

    如果作业被中止(由于临时数据库错误或用户中断),请使用尚未处理的任何行恢复。

  • --rowbatch=#

    命令行格式 --rowbatch=#
    类型 整数
    默认值 0
    最小值 0
    最大值 4294967295
    单位 rows

    设置每行队列的行数限制。使用 0 表示无限制。

  • --rowbytes=#

    命令行格式 --rowbytes=#
    类型 整数
    默认值 262144
    最小值 0
    最大值 4294967295
    单位 bytes

    设置每行队列的字节数限制。使用 0 表示无限制。

  • --stats

    命令行格式 --stats

    将与性能和其它内部统计信息相关的选项信息保存到名为 *.sto*.stt 的文件中。这些文件在成功完成时始终被保存(即使没有同时指定 --keep-state)。

  • --state-dir=name

    命令行格式 --state-dir=path
    类型 字符串
    默认值 .

    写入状态文件的位置 (tbl_name.map, tbl_name.rej, tbl_name.restbl_name.stt),由程序运行生成;默认值为当前目录。

  • --table=name

    命令行格式 --table=name
    类型 字符串
    默认值 [输入文件基本名称]

    默认情况下,ndb_import 尝试将数据导入到一个表中,该表的名称是正在从中读取数据的 CSV 文件的基本名称。可以通过使用 --table 选项(短格式 -t)来覆盖表的名称选择。

  • --tempdelay=#

    命令行格式 --tempdelay=#
    类型 整数
    默认值 10
    最小值 0
    最大值 4294967295
    单位 ms

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

  • --temperrors=#

    命令行格式 --temperrors=#
    类型 整数
    默认值 0
    最小值 0
    最大值 4294967295

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

  • --verbose, -v

    命令行格式 --verbose[=#]
    类型 布尔值
    默认值 false

    启用详细输出。

  • --usage

    命令行格式 --usage

    显示帮助文本并退出;与 --help 相同。

  • --version

    命令行格式 --version

    显示版本信息并退出。

LOAD DATA 一样,字段和行格式的选项必须与用于创建 CSV 文件的选项匹配,无论这是使用 SELECT INTO ... OUTFILE 完成的,还是通过其它方式完成的。没有等效于 LOAD DATA 语句的 STARTING WITH 选项。