开发者社区> 问答> 正文

如何为MySQL 8 JDBC客户端启用LOAD DATA LOCAL INFILE

在MySQL 8中,默认情况下禁用“ LOAD DATA LOCAL INFILE”语句。为了执行该语句,应同时启用服务器和客户端。以下MySQL文档描述了如何启用服务器和客户端:https : //dev.mysql.com/doc/refman/8.0/en/load-data-local.html

但是,没有记录如何针对JDBC客户端类型执行此操作。本文档中对客户端的任何建议都会产生错误“此MySQL版本不允许使用的命令”

展开
收起
保持可爱mmm 2019-11-15 11:57:37 4339 0
1 条回答
写回答
取消 提交回答
  • 个人博客:https://www.zhoujunwen.com

    首先在 Mysql8 中,默认“LOAD DATA LOCAL INFILE”是OFF,即关闭的一起。需要在服务端开启:

    SET @@GLOBAL.local_infile=1;
    

    在客户端命令行中使用,正如你所说,需要添加--local-infile=1参数,但是在JDBC中,貌似没有这个限制。只是需要使用超级用户权限。同时,你需要注意,你的文件必须是MySQL服务系统所在机器中的文件,而不是本地客户机器中中文件(或者说并不是你应用部署系统的文件,除非你的应用和MySQL在同一个机器上)。

    Connection con = DriverManager.getConnection("jdbc:mysql://localhost/foobar", "root", "password");
    Statement stmt = con.createStatement();
    String sql = 
        "load data infile 'c:/temp/some_data.txt' \n" +
        "   replace \n" +
        "   into table prd \n" +
        "   columns terminated by '\\t' \n" +
        "   ignore 1 lines";
    stmt.execute(sql);
    
    2019-11-15 14:48:59
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
搭建电商项目架构连接MySQL 立即下载
搭建4层电商项目架构,实战连接MySQL 立即下载
PolarDB MySQL引擎重磅功能及产品能力盛大发布 立即下载

相关镜像