文档首页
MySQL 8.4 参考手册
相关文档 下载本手册
PDF (US Ltr) - 39.9Mb
PDF (A4) - 40.0Mb
手册页 (TGZ) - 258.5Kb
手册页 (Zip) - 365.5Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 8.4 参考手册  /  ...  /  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_table 的现有 InnoDB 表(位于名为 myinnodb 的数据库中)导出到名为 myndb_tableNDB 表(位于名为 myndb 的数据库中),如下所示,假设您已经以具有适当权限的 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 值以获取所有可能的值。 此选项仅用于测试目的。

  • --errins-delay=#

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

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

  • --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
    单位 毫秒

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

  • --idlespin=#

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

    休眠之前重试的次数。

  • --ignore-lines=#

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

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

  • --input-type=name

    命令行格式 --input-type=name
    类型 枚举
    默认值 csv
    有效值

    random

    csv

    设置输入类型。默认值为 csvrandom 仅用于测试目的。

  • --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
    单位 毫秒

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

  • --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
    单位 毫秒

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

  • --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 选项。