快速导入40万数据到MySQL:load data infile与utf8处理
版权申诉
45 浏览量
更新于2024-09-11
收藏 61KB PDF 举报
在MySQL中,`LOAD DATA INFILE` 是一个强大的SQL命令,用于将外部文件中的数据快速导入到数据库表中,尤其适用于批量数据导入。针对40万条数据能在3-5秒内导入,效率较高。然而,当涉及到非英文字符,如中文时,确保文件和数据库字符集的一致性至关重要。如果你的MySQL服务器设置为UTF-8,那么文件也必须以UTF-8编码保存,否则可能会导致乱码。例如,命令如下:
```sql
LOAD DATA INFILE 'd:/Websites/Sxxxx/test1.txt'
IGNORE INTO TABLE `names`
FIELDS TERMINATED BY ','
ENCLOSED BY '\"'
```
这里`IGNORE`选项表示在导入过程中遇到重复键值时会忽略数据,而`REPLACE`则会替换已存在的行。如果在远程客户端执行此操作,需要加上`--local-infile=1`选项,以便MySQL能够处理文件中的数据。
对于本地服务器导入本地文件的情况,如果不指定`LOCAL`,可能会因为唯一性约束冲突而失败。此时,使用`IGNORE`或`REPLACE`可以避免这个问题,继续导入数据。例如,测试过程如下:
1. 首先检查表结构和当前数据:
```
SHOW CREATE TABLE tmp_loaddata\G;
SELECT * FROM tmp_loaddata;
```
2. 然后在命令行通过`system`命令执行文本文件内容到MySQL:
```
mysql> system cat /home/zhuxu/1.txt
```
3. 接着尝试导入数据,可能遇到唯一性约束错误,这时使用`REPLACE`或`IGNORE`来处理:
```sql
LOAD DATA INFILE '/home/zhuxu/1.txt' REPLACE INTO TABLE tmp_loaddata;
```
MySQL官方文档提供了详尽的`LOAD DATA INFILE`命令的说明,包括各种选项、限制以及如何处理不同类型的数据导入情况。建议在遇到具体问题时查阅官方文档,以便更准确地调整参数和解决潜在问题。在处理大量数据时,除了关注字符集一致性,还要注意性能优化,如使用索引、分批导入等。
2022-01-08 上传
2020-08-27 上传
2023-06-02 上传
2023-03-16 上传
2023-06-12 上传
2023-06-12 上传
2023-05-25 上传
2023-06-09 上传
weixin_38601446
- 粉丝: 7
- 资源: 939
最新资源
- C语言数组操作:高度检查器编程实践
- 基于Swift开发的嘉定单车LBS iOS应用项目解析
- 钗头凤声乐表演的二度创作分析报告
- 分布式数据库特训营全套教程资料
- JavaScript开发者Robert Bindar的博客平台
- MATLAB投影寻踪代码教程及文件解压缩指南
- HTML5拖放实现的RPSLS游戏教程
- HT://Dig引擎接口,Ampoliros开源模块应用
- 全面探测服务器性能与PHP环境的iprober PHP探针v0.024
- 新版提醒应用v2:基于MongoDB的数据存储
- 《我的世界》东方大陆1.12.2材质包深度体验
- Hypercore Promisifier: JavaScript中的回调转换为Promise包装器
- 探索开源项目Artifice:Slyme脚本与技巧游戏
- Matlab机器人学习代码解析与笔记分享
- 查尔默斯大学计算物理作业HP2解析
- GitHub问题管理新工具:GIRA-crx插件介绍