拓冰建站拓冰建站
首页 / 资讯中心 / 正文

MySQL mysqlimport 命令详解:文本文件批量导入数据库实战

1. 命令简介mysqlimport 是 MySQL 数据库提供的一个高效命令行工具专门用于将特定格式的文本文件如 CSV、TXT中的数据批量导入到数据库表中。它本质上是 LOAD DATA INFILE SQL 语句的命令行接口但使用起来更为便捷尤其适合在脚本或自动化任务中处理数据导入工作。2. 语法格式bash运行mysqlimport [选项] 数据库名 文本文件1 [文本文件2 ...]参数说明数据库名指定数据要导入到哪个数据库。 文本文件一个或多个包含待导入数据的文本文件。文件名不含扩展名必须与目标表名一致。例如文件 employees.txt 的数据将被导入到 数据库名.employees 表中。3. 常用选项及说明表格选项说明-u, --username指定连接 MySQL 服务器的用户名。-p, --password[name]提示输入连接 MySQL 服务器的密码。在 后直接跟密码如 - pYourPassword存在安全风险通常建议只使用 - p然后在提示符下输入。-h, --hostname指定 MySQL 服务器的主机名或 IP 地址。默认为 localhost。-P, --port#指定 MySQL 服务器的 TCP/IP 端口号。默认为 3306。--default-character-setname指定导入文件使用的字符集。-d, --delete在导入数据之前清空删除目标表中的所有现有数据。-f, --force即使遇到 SQL 错误如重复键也继续执行导入操作。-i, --ignore如果新数据与现有主键或唯一键冲突则忽略这些新行保留旧数据。-r, --replace如果新数据与现有主键或唯一键冲突则用新行替换旧行。-L, --local从客户端主机读取输入文件。默认情况下mysqlimport 期望服务器主机能够读取这些文件。--fields-terminated-by...指定字段之间的分隔符。例如--fields-terminated-by,用于 CSV 文件。--fields-enclosed-by...指定字段的包围字符。例如--fields-enclosed-by表示字段被双引号包围。--fields-optionally-enclosed-by...指定字段的可选包围字符通常用于字符串字段。--lines-terminated-by...指定行的终止符。例如--lines-terminated-by\r\n用于 Windows 格式的换行。-v, --verbose详细模式。输出更多关于程序运行状态的信息。-V, --version显示版本信息并退出。4. 示例用法示例 1基本导入将位于服务器上的文件 products.txt 导入到本地 inventory 数据库的 products 表中。bash运行mysqlimport -u root -p inventory products.txt示例 2导入前清空表在将 sales.csv 数据导入到 report 数据库的 sales 表前先删除表中所有旧数据。bash运行mysqlimport -u root -p --delete report sales.csv示例 3指定分隔符和字符集导入一个以逗号分隔、字段用双引号包围、使用 UTF‑8 编码的 CSV 文件 users.csv 到 app_db 数据库的 users 表。bash运行mysqlimport -u root -p \ --fields-terminated-by, \ --fields-enclosed-by \ --default-character-setutf8 \ app_db users.csv示例 4从远程客户端导入文件默认情况下mysqlimport 要求文件在数据库服务器上。使用 --local 选项可以从运行命令的客户端机器上读取文件。bash运行mysqlimport -u admin -h 192.168.1.100 -P 3307 --local -p mydatabase data.txt示例 5忽略重复键错误导入数据时如果遇到唯一键冲突重复记录则跳过冲突的行继续导入其他数据。bash运行mysqlimport -u root -p --ignore inventory unique_data.txt5. 注意事项文件与表名mysqlimport 根据文件名去掉扩展名来确定目标表名。文件 employee_data.csv 将对应数据库中的 employee_data 表。请确保文件名与目标表名匹配。文件位置除非使用--local选项否则指定的文本文件必须位于 MySQL 服务器主机上并且运行 MySQL 服务的系统用户有读取该文件的权限。安全与密码在命令行中直接使用-pYourPassword存在安全风险建议只使用-p然后在提示符下输入密码。字段与行格式如果数据文件不是默认的制表符分隔格式必须使用--fields-terminated-by、--fields-enclosed-by、--lines-terminated-by等选项明确指定格式否则会导致数据错位或导入失败。--deletevs TRUNCATE-d (--delete)选项使用 DELETE FROM table 语句清空表对于有自增主键的表计数器不会重置。如果需要彻底清空并重置计数器建议先在数据库中执行 TRUNCATE TABLE。错误处理了解--force、--ignore、--replace的区别根据业务需求选择合适的冲突处理策略。大文件导入对于非常大的数据文件使用 mysqlimport 通常比执行多条 INSERT 语句快得多。但在导入过程中建议关闭或调整相关索引以提升速度导入完成后再重建索引。
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门