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_table
的InnoDB
表在数据库名为myinnodb
的数据库中,可以将其导出到一个名为myndb_table
的NDB
表在数据库名为myndb
的数据库中,如下所示,假设您已经以适当权限登录到MySQL用户:
-
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或其他方法停止它,如果愿意的话,在继续之前,可以先这样做。
-
在系统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一起使用的选项都在下表中列出。附加描述随后出现。
-
Command-Line Format --abort-on-error
在任何致命错误时中断;仅用于调试。
-
Command-Line Format --ai-increment=#
Type 整数 Default Value 1
Minimum Value 1
Maximum Value 4294967295
对于具有隐藏主键的表,指定自动增加增量,如
auto_increment_increment
系统变量在MySQL服务器中所做的。 -
Command-Line Format --ai-offset=#
Type Integer Default Value 1
Minimum Value 1
Maximum Value 4294967295
对于隐藏的主键表,指定自动递增偏移量。类似于
auto_increment_offset
系统变量。 -
Command-Line Format --ai-prefetch-sz=#
Type Integer Default Value 1024
Minimum Value 1
Maximum Value 4294967295
对于隐藏的主键表,指定预取自动递增值的数量。类似于
ndb_autoincrement_prefetch_sz
系统变量在MySQL服务器中所做的事情。 -
Command-Line Format --character-sets-dir=path
包含字符集的目录。
-
Command-Line Format --connections=#
Type Integer Default Value 1
Minimum Value 1
Maximum Value 4294967295
创建集群连接的数量。
-
Command-Line Format --connect-retries=#
Type Integer Default Value 12
Minimum Value 0
Maximum Value 12
连接重试的次数。
-
Command-Line Format --connect-retry-delay=#
Type Integer Default Value 5
Minimum Value 0
Maximum Value 5
连接管理服务器的重试延迟时间(秒)。
-
Command-Line Format --connect-string=connection_string
Type String Default Value [none]
-
Command-Line Format --continue
当作业失败时,继续到下一个作业。
-
Command-Line Format --core-file
在出现错误时写入核心文件;用于调试。
-
--csvopt
=string
Command-Line Format --csvopt=opts
Type 字符串 Default Value [none]
提供了一个设置常见CSV导入选项的捷径方法。该选项的参数是一个由以下参数组成的字符串:
-
c
: 字段以逗号分隔 -
d
: 使用默认值,除非另一个参数覆盖它 -
n
: 行以\n
结尾 -
q
: 字段可选地用双引号字符("
)括起来 -
r
: 行以\r
结尾
参数在这个选项的参数中使用时,处理顺序是从右到左,以确保最后一个参数总是优先于任何可能冲突的已使用参数。同样适用于给定参数的重复实例。
此选项旨为在传输转义字符或引号困难的情况下进行测试而设计。
-
-
Command-Line Format --db-workers=#
Type 整数 Default Value 4
Minimum Value 1
Maximum Value 4294967295
每数据节点执行数据库操作的线程数。
-
Command-Line Format --defaults-file=path
Type 字符串 Default Value [none]
仅从给定文件中读取默认选项。
-
Command-Line Format --defaults-extra-file=path
Type 字符串 Default Value [none]
在读取全局文件之后,读取给定文件。
-
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
值来获取所有可能的值。该选项仅用于测试目的。 -
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 \
指定转义字符的方式与SQL
LOAD 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
相同。 -
Command-Line Format --fields-terminated-by=char
Type String Default Value \t
这个选项与
LOAD DATA
语句的FIELDS TERMINATED BY
选项相同,指定一个字符作为字段分隔符。 -
Command-Line Format --help
显示帮助文本并退出。
-
Command-Line Format --idlesleep=#
Type Integer Default Value 1
Minimum Value 1
Maximum Value 4294967295
Unit ms 等待更多工作可执行时的休眠时间(毫秒)。
-
Command-Line Format --idlespin=#
Type Integer Default Value 0
Minimum Value 0
Maximum Value 4294967295
重试的次数,直到休眠。
-
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
;随机
仅用于测试目的。 -
Command-Line Format --input-workers=#
Type 整数值 Default Value 4
Minimum Value 1
Maximum Value 4294967295
设置处理输入的线程数。
-
Command-Line Format --keep-state
默认情况下,ndb_import 在完成作业时删除所有状态文件(除了非空
*.rej
文件)。指定此选项(无需提供任何参数)强制程序保留所有状态文件而不是删除它们。 -
Command-Line Format --lines-terminated-by=char
Type String Default Value \n
这个选项与
LOAD DATA
语句的LINES TERMINATED BY
选项一样工作,指定一个字符作为结束行。 -
Command-Line Format --log-level=#
Type Integer Default Value 0
Minimum Value 0
Maximum Value 2
根据给定的级别进行内部记录。这选项主要用于内部和开发用途。
在NDB调试构建中,只有在登录路径设置为4时,才能使用此选项来设置日志级别。
-
Command-Line Format --login-path=path
Type String Default Value [none]
从登录文件中读取给定路径。
-
Command-Line Format --no-login-paths
跳过从登录路径文件中读取选项。
-
Command-Line Format --max-rows=#
Type 整数 Default Value 0
Minimum Value 0
Maximum Value 4294967295
Unit 字节 只导入此数量的输入数据行;默认为 0,导入所有行。
-
Command-Line Format --missing-ai-column='name'
Type 布尔值 Default Value FALSE
当导入单个表或多个表时,可以使用此选项。当使用该选项时,表示正在导入的 CSV 文件中不包含任何
AUTO_INCREMENT
列的值,并且 ndb_import 应该提供它们;如果使用了此选项且AUTO_INCREMENT
列包含任何值,则导入操作无法继续。 -
Command-Line Format --monitor=#
Type Integer Default Value 2
Minimum Value 0
Maximum Value 4294967295
Unit 字节 如果有变化(状态,拒绝行,临时错误),则定期打印正在运行的作业的状态。设置为0禁用此报告。将其设置为1打印任何更改。更高的值减少了该状态报告的频率。
-
Command-Line Format --ndb-connectstring=connection_string
Type 字符串 Default Value [none]
设置连接字符串,以便与ndb_mgmd连接。语法:
[nodeid=
。覆盖id
;][host=]hostname
[:port
]NDB_CONNECTSTRING
和my.cnf
中的条目。 -
Command-Line Format --ndb-mgm-tls=level
Type 枚举值 Default Value relaxed
Valid Values relaxed
strict
设置连接到管理服务器所需的TLS支持级别;可以是
relaxed
或strict
。relaxed
(默认)意味着尝试建立TLS连接,但成功不必要求;strict
表示需要使用TLS才能连接。 -
Command-Line Format --ndb-mgmd-host=connection_string
Type 字符串 Default Value [none]
-
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
禁用。 -
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
来重写此值。 -
Command-Line Format --no-asynch
运行数据库操作作为批处理,单个事务。
-
Command-Line Format --no-defaults
不从任何选项文件(除了登录文件)中读取默认选项。
-
Command-Line Format --no-hint
不使用分布式密钥提示选择数据节点。
-
Command-Line Format --opbatch=#
Type Integer Default Value 256
Minimum Value 1
Maximum Value 4294967295
Unit 字节 设置对执行批处理的操作(包括blob操作)的数量限制,并因此限制异步事务的数量。
-
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
只用于测试。 -
Command-Line Format --output-workers=#
Type 整数 Default Value 2
Minimum Value 1
Maximum Value 4294967295
设置处理输出或转发数据库操作的线程数。
-
Command-Line Format --pagesize=#
Type 整数 Default Value 4096
Minimum Value 1
Maximum Value 4294967295
Unit 字节 将 I/O 缓冲区对齐到给定大小。
-
Command-Line Format --pagecnt=#
Type Integer Default Value 64
Minimum Value 1
Maximum Value 4294967295
设置I/O缓冲区大小的倍数。CSV输入工作者分配的缓冲区将被扩大。
-
Command-Line Format --polltimeout=#
Type Integer Default Value 1000
Minimum Value 1
Maximum Value 4294967295
Unit 毫秒 设置每次轮询完成的异步事务超时;轮询将继续进行,直到所有轮询都完成,或出现错误。
-
Command-Line Format --print-defaults
打印程序参数列表并退出。
-
Command-Line Format --rejects=#
Type Integer Default Value 0
Minimum Value 0
Maximum Value 4294967295
限制数据加载中拒绝的行数(永久错误的行)。默认为 0,表示任何被拒绝的行都会导致致命错误。超过限制的行将添加到
.rej
文件。这个选项所施加的限制只在当前运行期间有效。如果使用
--resume
重新启动一个运行,则认为这是一个新的运行。 -
Command-Line Format --resume
如果一个作业被中断(由于临时数据库错误或用户的中断),则使用 “新的” 运行继续处理任何尚未处理的行。
-
Command-Line Format --rowbatch=#
Type 整数 Default Value 0
Minimum Value 0
Maximum Value 4294967295
Unit 行数 设置每个行队列的最大行数。使用 0 表示没有限制。
-
Command-Line Format --rowbytes=#
Type 整数 Default Value 262144
Minimum Value 0
Maximum Value 4294967295
Unit 字节 设置每行队列的最大字节数限制。使用 0 表示无限制。
-
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
, andtbl_name
.res
) produced by a run of the program; the default is the current directory.tbl_name
.stt -
Command-Line Format --table=name
Type String Default Value [输入文件基础名]
默认情况下,ndb_import 尝试将数据导入到表名为CSV文件读取数据的基础名的表中。您可以使用
--table
选项(短形式-t
)来重写选择表名。 -
Command-Line Format --tempdelay=#
Type 整数 Default Value 10
Minimum Value 0
Maximum Value 4294967295
Unit 毫秒 在临时错误之间等待的毫秒数。
-
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
启用详细输出。
-
Command-Line Format --usage
显示帮助文本并退出;与
--help
相同。 -
Command-Line Format --version
显示版本信息并退出。
与LOAD DATA
一样,用于字段和行格式的选项大多数匹配创建CSV文件时使用的选项,无论是通过SELECT INTO ... OUTFILE
还是其他方式。没有等价于LOAD DATA
语句的STARTING WITH
选项。