mysql load 条件_浅谈MySQL load data local infile细节 -- 从源码层面

本文探讨了MySQL `LOAD DATA LOCAL INFILE` 命令的细节,从源码层面分析了客户端和服务器端的执行流程。重点关注了文件存在性检查、使用绝对路径以及发送空包作为命令结束标志。通过分析5.5.36版本的源码,展示了客户端libmysql的`handle_local_infile`函数和服务器端的`mysql_load`函数的关键实现。此外,还提及了在Windows MySQL 8.0中可能出现的错误情况和解决方案。
摘要由CSDN通过智能技术生成

相信大伙对mysql的load data local infile并不陌生,今天来巩固一下这里面隐藏的一些细节,对于想自己动手开发一个mysql客户端有哪些点需要注意的呢?

首先,了解一下流程:

453463b83703bfc095a0ad615b515709.png

3个点:

1、Is '/' exists?对于客户端来说,在文件发送前是先检查一下文件是否存在;

2、filename前建议加上绝对路径;

3、空包,表示命令已执行完毕。

接下来,一起来学习下官方源码(版本5.5.36)是如何实现该流程?由于篇幅关系,只贴出关键部分,其他读者自行查阅源码。

首先,看看客户端的核心实现,源码在libmysql\libmysql.c的handle_local_infile函数:

my_bool handle_local_infile(MYSQL *mysql, const char *net_filename)

{

/* initialize local infile (open file, usually) */

((*options->local_infile_init)(&li_ptr, net_filename,

options->local_infile_userdata));

/* read blocks of data from loca

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值