您好,登录后才能下订单哦!
密码登录
登录注册
点击 登录注册 即表示同意《亿速云用户服务条款》
MySQL提供了LOAD DATA INFILE
语句,用于高效地将外部文件(如CSV格式)数据导入到数据库表中。这种方法比使用INSERT语句逐行插入要快得多,特别适合批量导入大量数据。
LOAD DATA [LOCAL] INFILE 'file_path'
INTO TABLE table_name
[FIELDS
TERMINATED BY 'delimiter'
[OPTIONALLY] ENCLOSED BY 'char'
ESCAPED BY 'char'
]
[LINES
TERMINATED BY 'line_terminator'
]
[IGNORE number LINES]
[(column_list)]
LOCAL
:指定从客户端主机读取文件,而非服务器file_path
:CSV文件的路径(服务器或客户端)table_name
:目标表名FIELDS
子句:
TERMINATED BY
:字段分隔符(默认为制表符)ENCLOSED BY
:字段包围符(如引号)ESCAPED BY
:转义字符(默认为反斜杠)LINES
子句:
TERMINATED BY
:行终止符(默认为换行符)IGNORE number LINES
:跳过文件开头的指定行数column_list
:指定导入到哪些列(可选)假设有一个CSV文件employees.csv
,内容如下:
id,name,department,salary
1,"张三","技术部",8500
2,"李四","市场部",7500
3,"王五","人事部",6800
导入到employees
表的命令:
LOAD DATA INFILE '/path/to/employees.csv'
INTO TABLE employees
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 LINES
(id, name, department, salary);
文件权限问题:
ERROR 1290 (HY000): The MySQL server is running with the --secure-file-priv option
secure_file_priv
系统变量字符集问题:
SET NAMES utf8mb4;
日期格式问题:
STR_TO_DATE()
函数转换空值处理:
\N
表示ALTER TABLE table_name DISABLE KEYS;
ALTER TABLE table_name ENABLE KEYS;
LOCAL
关键字会降低速度,尽可能在服务器上操作如果LOAD DATA INFILE
不适用,还可以考虑:
- 使用mysqlimport
命令行工具
- 通过编程语言(如Python、PHP)编写导入脚本
- 使用ETL工具如Pentaho、Talend等
LOAD DATA INFILE
是MySQL中导入CSV数据最高效的方式,掌握其用法可以显著提高数据导入效率。使用时需要注意文件路径、权限、字符集等细节问题,并根据数据特点调整相应的参数设置。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。