Documentation Home
MySQL 8.4 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 39.8Mb
PDF (A4) - 39.9Mb
Man Pages (TGZ) - 257.9Kb
Man Pages (Zip) - 364.9Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 8.4 Reference Manual  /  ...  /  ndb_import — Import CSV Data Into 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集群管理服务器;因此,集群config.ini文件中必须有一个未使用的[api]插槽。

要复制使用不同存储引擎的现有表,例如InnoDB作为NDB表,可以使用mysql客户端执行一个SELECT INTO OUTFILE语句将现有表导出到CSV文件,然后执行一个CREATE TABLE LIKE语句创建一个新的具有相同结构的表,然后在新表上执行ALTER TABLE ... ENGINE=NDB;此后,从系统shell中调用ndb_import将数据加载到新的NDB表中。例如,现有一个名为myinnodb_tableInnoDB表在数据库名为myinnodb的数据库中,可以将其导出到一个名为myndb_tableNDB表在数据库名为myndb的数据库中,如下所示,假设您已经以适当权限登录到MySQL用户:

  1. In the mysql client:

    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

    Command-Line Format --abort-on-error

    在任何致命错误时中断;仅用于调试。

  • --ai-increment=#

    Command-Line Format --ai-increment=#
    Type 整数
    Default Value 1
    Minimum Value 1
    Maximum Value 4294967295

    对于具有隐藏主键的表,指定自动增加增量,如auto_increment_increment系统变量在MySQL服务器中所做的。

  • --ai-offset=#

    Command-Line Format --ai-offset=#
    Type Integer
    Default Value 1
    Minimum Value 1
    Maximum Value 4294967295

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

  • --ai-prefetch-sz=#

    Command-Line Format --ai-prefetch-sz=#
    Type Integer
    Default Value 1024
    Minimum Value 1
    Maximum Value 4294967295

    对于隐藏的主键表,指定预取自动递增值的数量。类似于ndb_autoincrement_prefetch_sz系统变量在MySQL服务器中所做的事情。

  • --character-sets-dir

    Command-Line Format --character-sets-dir=path

    包含字符集的目录。

  • --connections=#

    Command-Line Format --connections=#
    Type Integer
    Default Value 1
    Minimum Value 1
    Maximum Value 4294967295

    创建集群连接的数量。

  • --connect-retries

    Command-Line Format --connect-retries=#
    Type Integer
    Default Value 12
    Minimum Value 0
    Maximum Value 12

    连接重试的次数。

  • --connect-retry-delay

    Command-Line Format --connect-retry-delay=#
    Type Integer
    Default Value 5
    Minimum Value 0
    Maximum Value 5

    连接管理服务器的重试延迟时间(秒)。

  • --connect-string

    Command-Line Format --connect-string=connection_string
    Type String
    Default Value [none]

    --ndb-connectstring相同。

  • --continue

    Command-Line Format --continue

    当作业失败时,继续到下一个作业。

  • --core-file

    Command-Line Format --core-file

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

  • --csvopt=string

    Command-Line Format --csvopt=opts
    Type 字符串
    Default Value [none]

    提供了一个设置常见CSV导入选项的捷径方法。该选项的参数是一个由以下参数组成的字符串:

    • c: 字段以逗号分隔

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

    • n: 行以\n结尾

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

    • r: 行以\r结尾

    参数在这个选项的参数中使用时,处理顺序是从右到左,以确保最后一个参数总是优先于任何可能冲突的已使用参数。同样适用于给定参数的重复实例。

    此选项旨为在传输转义字符或引号困难的情况下进行测试而设计。

  • --db-workers=#

    Command-Line Format --db-workers=#
    Type 整数
    Default Value 4
    Minimum Value 1
    Maximum Value 4294967295

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

  • --defaults-file

    Command-Line Format --defaults-file=path
    Type 字符串
    Default Value [none]

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

  • --defaults-extra-file

    Command-Line Format --defaults-extra-file=path
    Type 字符串
    Default Value [none]

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

  • --defaults-group-suffix

    Command-Line Format --defaults-group-suffix=string
    Type 字符串
    Default Value [none]

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

  • --errins-type=name

    Command-Line Format --errins-type=name
    Type 枚举值
    Default Value [none]
    Valid Values

    stopjob

    stopall

    sighup

    sigint

    list

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

  • --errins-delay=#

    Command-Line Format --errins-delay=#
    Type 整数
    Default Value 1000
    Minimum Value 0
    Maximum Value 4294967295
    Unit 毫秒

    延迟插入错误的毫秒数;添加随机变量。这选项仅用于测试目的。

  • --fields-enclosed-by=char

    Command-Line Format --fields-enclosed-by=char
    Type 字符串
    Default Value [none]

    它与LOAD DATA语句的FIELDS ENCLOSED BY选项相同,指定解释为引号字段值的字符。对于CSV输入,这与--fields-optionally-enclosed-by相同。

  • --fields-escaped-by=name

    Command-Line Format --fields-escaped-by=char
    Type 字符串
    Default Value \

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

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

    Command-Line Format --fields-optionally-enclosed-by=char
    Type String
    Default Value [none]

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

  • --fields-terminated-by=char

    Command-Line Format --fields-terminated-by=char
    Type String
    Default Value \t

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

  • --help

    Command-Line Format --help

    显示帮助文本并退出。

  • --idlesleep=#

    Command-Line Format --idlesleep=#
    Type Integer
    Default Value 1
    Minimum Value 1
    Maximum Value 4294967295
    Unit ms

    等待更多工作可执行时的休眠时间(毫秒)。

  • --idlespin=#

    Command-Line Format --idlespin=#
    Type Integer
    Default Value 0
    Minimum Value 0
    Maximum Value 4294967295

    重试的次数,直到休眠。

  • --ignore-lines=#

    Command-Line Format --ignore-lines=#
    Type Integer
    Default Value 0
    Minimum Value 0
    Maximum Value 4294967295

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

  • --input-type=name

    Command-Line Format --input-type=name
    Type 枚举值
    Default Value csv
    Valid Values

    随机

    csv

    设置输入类型的类型。默认为csv随机仅用于测试目的。

  • --input-workers=#

    Command-Line Format --input-workers=#
    Type 整数值
    Default Value 4
    Minimum Value 1
    Maximum Value 4294967295

    设置处理输入的线程数。

  • --keep-state

    Command-Line Format --keep-state

    默认情况下,ndb_import 在完成作业时删除所有状态文件(除了非空 *.rej 文件)。指定此选项(无需提供任何参数)强制程序保留所有状态文件而不是删除它们。

  • --lines-terminated-by=name

    Command-Line Format --lines-terminated-by=char
    Type String
    Default Value \n

    这个选项与LOAD DATA语句的LINES TERMINATED BY选项一样工作,指定一个字符作为结束行。

  • --log-level=#

    Command-Line Format --log-level=#
    Type Integer
    Default Value 0
    Minimum Value 0
    Maximum Value 2

    根据给定的级别进行内部记录。这选项主要用于内部和开发用途。

    在NDB调试构建中,只有在登录路径设置为4时,才能使用此选项来设置日志级别。

  • --login-path

    Command-Line Format --login-path=path
    Type String
    Default Value [none]

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

  • --no-login-paths

    Command-Line Format --no-login-paths

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

  • --max-rows=#

    Command-Line Format --max-rows=#
    Type 整数
    Default Value 0
    Minimum Value 0
    Maximum Value 4294967295
    Unit 字节

    只导入此数量的输入数据行;默认为 0,导入所有行。

  • --missing-ai-column

    Command-Line Format --missing-ai-column='name'
    Type 布尔值
    Default Value FALSE

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

  • --monitor=#

    Command-Line Format --monitor=#
    Type Integer
    Default Value 2
    Minimum Value 0
    Maximum Value 4294967295
    Unit 字节

    如果有变化(状态,拒绝行,临时错误),则定期打印正在运行的作业的状态。设置为0禁用此报告。将其设置为1打印任何更改。更高的值减少了该状态报告的频率。

  • --ndb-connectstring

    Command-Line Format --ndb-connectstring=connection_string
    Type 字符串
    Default Value [none]

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

  • --ndb-mgm-tls

    Command-Line Format --ndb-mgm-tls=level
    Type 枚举值
    Default Value relaxed
    Valid Values

    relaxed

    strict

    设置连接到管理服务器所需的TLS支持级别;可以是relaxedstrictrelaxed(默认)意味着尝试建立TLS连接,但成功不必要求;strict表示需要使用TLS才能连接。

  • --ndb-mgmd-host

    Command-Line Format --ndb-mgmd-host=connection_string
    Type 字符串
    Default Value [none]

    --ndb-connectstring相同。

  • --ndb-nodeid

    Command-Line Format --ndb-nodeid=#
    Type 整数
    Default Value [none]

    设置节点ID,以覆盖--ndb-connectstring中设置的任何ID。

  • --ndb-optimized-node-selection

    Command-Line Format --ndb-optimized-node-selection

    启用优化选取节点的交易。默认情况下已启用;使用 --skip-ndb-optimized-node-selection 禁用。

  • --ndb-tls-search-path

    Command-Line Format --ndb-tls-search-path=list
    Type 路径名
    Default Value (Unix) $HOME/ndb-tls
    Default Value (Windows) $HOMEDIR/ndb-tls

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

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

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

  • --no-asynch

    Command-Line Format --no-asynch

    运行数据库操作作为批处理,单个事务。

  • --no-defaults

    Command-Line Format --no-defaults

    不从任何选项文件(除了登录文件)中读取默认选项。

  • --no-hint

    Command-Line Format --no-hint

    不使用分布式密钥提示选择数据节点。

  • --opbatch=#

    Command-Line Format --opbatch=#
    Type Integer
    Default Value 256
    Minimum Value 1
    Maximum Value 4294967295
    Unit 字节

    设置对执行批处理的操作(包括blob操作)的数量限制,并因此限制异步事务的数量。

  • --opbytes=#

    Command-Line Format --opbytes=#
    Type Integer
    Default Value 0
    Minimum Value 0
    Maximum Value 4294967295
    Unit 字节

    设置每个执行批处理的字节数限制。使用 0 表示没有限制。

  • --output-type=name

    Command-Line Format --output-type=name
    Type 枚举值
    Default Value ndb
    Valid Values null

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

  • --output-workers=#

    Command-Line Format --output-workers=#
    Type 整数
    Default Value 2
    Minimum Value 1
    Maximum Value 4294967295

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

  • --pagesize=#

    Command-Line Format --pagesize=#
    Type 整数
    Default Value 4096
    Minimum Value 1
    Maximum Value 4294967295
    Unit 字节

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

  • --pagecnt=#

    Command-Line Format --pagecnt=#
    Type Integer
    Default Value 64
    Minimum Value 1
    Maximum Value 4294967295

    设置I/O缓冲区大小的倍数。CSV输入工作者分配的缓冲区将被扩大。

  • --polltimeout=#

    Command-Line Format --polltimeout=#
    Type Integer
    Default Value 1000
    Minimum Value 1
    Maximum Value 4294967295
    Unit 毫秒

    设置每次轮询完成的异步事务超时;轮询将继续进行,直到所有轮询都完成,或出现错误。

  • --print-defaults

    Command-Line Format --print-defaults

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

  • --rejects=#

    Command-Line Format --rejects=#
    Type Integer
    Default Value 0
    Minimum Value 0
    Maximum Value 4294967295

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

    这个选项所施加的限制只在当前运行期间有效。如果使用 --resume 重新启动一个运行,则认为这是一个新的运行。

  • --resume

    Command-Line Format --resume

    如果一个作业被中断(由于临时数据库错误或用户的中断),则使用 新的 运行继续处理任何尚未处理的行。

  • --rowbatch=#

    Command-Line Format --rowbatch=#
    Type 整数
    Default Value 0
    Minimum Value 0
    Maximum Value 4294967295
    Unit 行数

    设置每个行队列的最大行数。使用 0 表示没有限制。

  • --rowbytes=#

    Command-Line Format --rowbytes=#
    Type 整数
    Default Value 262144
    Minimum Value 0
    Maximum Value 4294967295
    Unit 字节

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

  • --stats

    Command-Line Format --stats

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

  • --state-dir=name

    Command-Line Format --state-dir=path
    Type String
    Default Value .

    Where to write the state files (tbl_name.map, tbl_name.rej, tbl_name.res, and tbl_name.stt) produced by a run of the program; the default is the current directory.

  • --table=name

    Command-Line Format --table=name
    Type String
    Default Value [输入文件基础名]

    默认情况下,ndb_import 尝试将数据导入到表名为CSV文件读取数据的基础名的表中。您可以使用--table选项(短形式-t)来重写选择表名。

  • --tempdelay=#

    Command-Line Format --tempdelay=#
    Type 整数
    Default Value 10
    Minimum Value 0
    Maximum Value 4294967295
    Unit 毫秒

    在临时错误之间等待的毫秒数。

  • --temperrors=#

    Command-Line Format --temperrors=#
    Type 整数
    Default Value 0
    Minimum Value 0
    Maximum Value 4294967295

    一次执行批处理时可以失败的临时错误次数。默认为0,表示任何临时错误都是致命的。临时错误不会导致行添加到.rej文件中。

  • --verbose, -v

    Command-Line Format --verbose[=#]
    Type Boolean
    Default Value false

    启用详细输出。

  • --usage

    Command-Line Format --usage

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

  • --version

    Command-Line Format --version

    显示版本信息并退出。

LOAD DATA一样,用于字段和行格式的选项大多数匹配创建CSV文件时使用的选项,无论是通过SELECT INTO ... OUTFILE还是其他方式。没有等价于LOAD DATA语句的STARTING WITH选项。