mysqlimport —一个数据导入程序
mysqlimport是提供了一个命令行界面导入工具。mysqlimport的大多数选项直接对应于LOAD DATA语法子句 。

像这样调用mysqlimport:

shell> mysqlimport [options] db_name textfile1 [textfile2 ...]

对于在命令行上的每个文本文件, mysqlimport将删除所有扩展名,并=将文件内容导入到相应的表的名称。例如,文件命名patient.txt, patient.text和 patient所有将被导入到一个指定的表patient。

mysqlimport支持以下选项,可以在命令行或选项文件的 [mysqlimport]和[client]组中指定。

mysqlimport选项

--help, -?
显示帮助消息并退出。

--bind-address=ip_address
在具有多个网络接口的计算机上,使用此选项选择用于连接到MySQL服务器的接口。

--character-sets-dir=dir_name
字符集的安装目录。

--columns=column_list, -c column_list
此选项以逗号分隔的列名列表作为其值。列名的顺序指示如何将数据文件列与表列匹配。

--compress, -C
尽可能压缩客户端和服务器之间发送的所有信息。
从MySQL 8.0.18开始,不推荐使用此选项。它将在将来的MySQL版本中删除。

--compression-algorithms=value
用于连接到服务器的允许的压缩算法。可用算法与protocol_compression_algorithms 系统变量相同 。默认值为 uncompressed。
该选项是在MySQL 8.0.18中添加的。

--debug-check
程序退出时,打印一些调试信息。

--debug-info
程序退出时,打印调试信息以及内存和CPU使用情况统计信息。

--default-character-set=charset_name
使用charset_name作为默认字符集。

--default-auth=plugin
有关使用哪个客户端身份验证插件的提示。

--defaults-extra-file=file_name
在全局选项文件之后但在用户选项文件之前(在Unix上)读取此选项文件。如果文件不存在或无法访问,则发生错误。 file_name如果给出为相对路径名而不是完整路径名,则相对于当前目录解释。

--defaults-file=file_name
仅使用给定的选项文件。如果文件不存在或无法访问,则发生错误。 file_name如果给出为相对路径名而不是完整路径名,则相对于当前目录解释。
例外:即使这样--defaults-file给,客户端程序也会读取.mylogin.cnf。

--defaults-group-suffix=str
不仅读取常规选项组,而且读取具有常规名称和后缀的组 tr。例如, mysqlimport通常读取 [client]和 [mysqlimport]组。如果给出了--defaults-group-suffix=_other 选项,mysqlimport也会读取[client_other]和 [mysqlimport_other]组。

--delete, -D
导入文本文件之前,清空表。

--enable-cleartext-plugin
启用mysql_clear_password明文身份验证插件。

--fields-terminated-by=..., --fields-enclosed-by=..., --fields-optionally-enclosed-by=..., --fields-escaped-by=...
这些选项与的相应LOAD DATA子句具有相同的含义。

--force, -f
忽略错误。例如,如果文本文件表不存在,请继续处理所有剩余文件。不使用--force,如果表不存在,则 mysqlimport退出。

--get-server-public-key
从服务器请求基于RSA密钥对的密码交换所需的公共密钥。此选项适用于使用caching_sha2_password身份验证插件进行身份验证的客户端 。对于该插件,除非请求,否则服务器不会发送公钥。对于未使用该插件进行身份验证的帐户,将忽略此选项。如果未使用基于RSA的密码交换,也将被忽略,例如客户端使用安全连接连接到服务器时。
如果给出--server-public-key-path=file_name并指定了有效的公共密钥文件,则它优先于 --get-server-public-key。

--host=host_name, -h host_name
将数据导入给定主机上的MySQL服务器。默认主机为localhost。

--ignore, -i
请参阅--replace选项说明 。

--ignore-lines=N
忽略N数据文件的第一行。

--lines-terminated-by=...
此选项的含义与的相应子句相同LOAD DATA。例如,要导入行以回车/换行对结尾的Windows文件,请使用 --lines-terminated-by="\r\n"。(根据命令解释器的转义约定,您可能必须加倍反斜杠。)

--local, -L
默认情况下,服务器主机上的服务器读取文件。使用此选项,mysqlimport在客户端主机上本地读取输入文件。启用本地数据加载还需要服务器允许它。

--lock-tables, -l
在处理任何文本文件之前,请锁定所有表以进行写入。这样可以确保所有表在服务器上都同步。

--login-path=name
从.mylogin.cnf登录路径文件中的命名登录路径读取选项 。“login path”是含有指定要连接到哪个MySQL服务器和选项哪个帐户作为认证选项组。要创建或修改登录路径文件,请使用 mysql_config_editor实用程序。

--low-priority
LOW_PRIORITY加载表格时使用。这会影响只使用表级锁只存储引擎(例如MyISAM, MEMORY和MERGE)。

--no-defaults
不要读取任何选项文件。如果由于从选项文件中读取未知选项而导致程序启动失败,则可以使用选项--no-defaults来防止读取它们。

唯一的例外是,在所有情况下都会读取文件.mylogin.cnf (如果存在)。这样,即使使用密码,也可以通过--no-defaults比命令行更安全的方式指定密码 。(.mylogin.cnf由mysql_config_editor实用程序创建 。

--password[=password], -p[password]
用于连接服务器的MySQL帐户的密码。密码值是可选的。如果未给出,则 mysqlimport提示输入1。如果提供,则--password=或-p和后面的密码之间必须没有空格。如果未指定密码选项,则默认为不发送密码。
在命令行上指定密码应该被认为是不安全的。为避免在命令行上输入密码,请使用选项文件。
要明确指定没有密码,并且mysqlimport不应提示输入密码 ,请使用该 --skip-password 选项。

--pipe, -W
在Windows上,使用命名管道连接到服务器。仅当服务器在named_pipe启用系统变量以支持命名管道连接的情况下启动时,此选项才适用 。另外,建立连接的用户必须是named_pipe_full_access_group 系统变量指定的Windows组的成员 。

--plugin-dir=dir_name
在其中查找插件的目录。如果--default-auth选项用于指定身份验证插件,但 mysqlimport找不到它,请指定此选项 。

--port=port_num, -P port_num
对于TCP/IP连接,使用的端口号。

--print-defaults
打印程序名称及其从选项文件中获取的所有选项。

--protocol={TCP|SOCKET|PIPE|MEMORY}
用于连接到服务器的连接协议。当其他连接参数通常导致使用所需协议以外的协议时,此功能很有用。

--replace, -r
在--replace和 --ignore选项控制复制唯一键值的现有行输入行。如果指定 --replace,则新行将替换具有相同唯一键值的现有行。如果指定--ignore,将跳过在唯一键值上复制现有行的输入行。如果您不指定任何一个选项,则当找到重复的键值时,将发生错误,而文本文件的其余部分将被忽略。

--secure-auth
该选项已在MySQL 8.0.3中删除。

--server-public-key-path=file_name
包含服务器用于基于RSA密钥对的密码交换所需的公用密钥的客户端副本的文件的路径名。该文件必须为PEM格式。此选项适用于使用sha256_password或 caching_sha2_password身份验证插件进行身份验证的客户端 。对于未通过这些插件之一进行身份验证的帐户,将忽略此选项。如果未使用基于RSA的密码交换,也将被忽略,例如客户端使用安全连接连接到服务器时。
如果 --server-public-key-path=file_name给出并指定了有效的公共密钥文件,则它优先于--get-server-public-key
对于sha256_password,仅当MySQL是使用OpenSSL构建的时,此选项才适用。

--shared-memory-base-name=name
在Windows上,共享内存名称,用于使用共享内存与本地服务器建立的连接。默认值为MYSQL。共享内存名称区分大小写。
仅当服务器在shared_memory启用系统变量以支持共享内存连接的情况下启动时,此选项才适用 。

--silent, -s
静音模式。仅在发生错误时才产生输出。

--socket=path, -S path
对于与的连接localhost,要使用的Unix套接字文件,或者在Windows上,要使用的命名管道的名称。
在Windows上,仅当在named_pipe 启用了支持命名管道连接的系统变量的情况下启动服务器时,此选项才适用。另外,建立连接的用户必须是named_pipe_full_access_group 系统变量指定的Windows组的成员 。

--ssl*
以 --ssl开头的选项指定是否使用SSL连接到服务器,并指示在何处查找SSL密钥和证书。

--ssl-fips-mode={OFF|ON|STRICT}
控制是否在客户端上启用FIPS模式。--ssl-fips-mode选项与其他--ssl-xxx选项的不同之处在于,选项 不用于建立加密连接,而是影响允许的加密操作。
这些--ssl-fips-mode 值是允许的:
OFF:禁用FIPS模式。
ON:启用FIPS模式。
STRICT:启用“strict” FIPS模式。

注意
如果OpenSSL的FIPS对象模块不可用时,对于唯一的允许值 --ssl-fips-mode是 OFF。在这种情况下,设置 --ssl-fips-mode为 ON或STRICT导致客户端在启动时发出警告并以非FIPS模式运行。

--tls-ciphersuites=ciphersuite_list
使用TLSv1.3的加密连接的允许密码套件。该值是一个或多个以冒号分隔的密码套件名称的列表。可以为此选项命名的密码套件取决于用于编译MySQL的SSL库。
该选项是在MySQL 8.0.16中添加的。

--tls-version=protocol_list
加密连接允许的TLS协议。该值是一个或多个逗号分隔的协议名称的列表。可以为此选项命名的协议取决于用于编译MySQL的SSL库。

--user=user_name, -u user_name
用于连接到服务器的MySQL帐户的用户名。

--use-threads=N
使用N 线程并行加载文件。

--verbose, -v
详细模式。打印有关程序功能的更多信息。

--version, -V
显示版本信息并退出。

--zstd-compression-level=level
用于与使用zstd压缩算法的服务器的连接的压缩级别。允许的级别为1到22,更大的值表示压缩级别增加。默认 zstd压缩级别为3。压缩级别设置对不使用zstd压缩的连接无效。
该选项是在MySQL 8.0.18中添加的。

这是一个示例会话,演示了如何使用 mysqlimport:

shell> mysql -e 'CREATE TABLE imptest(id INT, n VARCHAR(30))' test
shell> ed
a
100     Max Sydow
101     Count Dracula
.
w imptest.txt
32
q
shell> od -c imptest.txt
0000000   1   0   0  \t   M   a   x       S   y   d   o   w  \n   1   0
0000020   1  \t   C   o   u   n   t       D   r   a   c   u   l   a  \n
0000040
shell> mysqlimport --local test imptest.txt
test.imptest: Records: 2  Deleted: 0  Skipped: 0  Warnings: 0
shell> mysql -e 'SELECT * FROM imptest' test
+------+---------------+
| id   | n             |
+------+---------------+
|  100 | Max Sydow     |
|  101 | Count Dracula |
+------+---------------+