MySQL 加载本地数据 INFILE Julia

MySQL LOAD DATA LOCAL INFILE Julia

我正在使用 MySql 5.5.53-0ubuntu0.14.04.1 和 Julia 版本 0.5.0

在我的 julia 脚本中,我正在使用

conn = MySQL.mysql_connect(host, username, password, database)

command = string("LOAD DATA LOCAL INFILE 'infile' INTO TABLE temp_table FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '\"';")

MySQL.mysql_execute(conn, command) 

我收到错误消息“此 MySQL 版本不允许使用的命令”

当我直接在 MySQL 控制台上 运行 时,该命令确实有效,所以我假设这是 Julia MySQL.mysql_connect 的问题。

看起来Python也有类似的问题,下面的语法解决了这个问题。 MySQL LOAD DATA LOCAL INFILE Python

MySQLdb.connect(server, username, password, database, local_infile = 1)

我想知道我应该如何对 Julia 执行此操作?

Repos将其作为答案而不是评论,因为特定代码片段在评论中中断。

如果您能够使用底层 os 设施,并且假设您安装了 mysql 客户端并且您正在尝试做的是从文件填充数据库,作为解决方法您可以将文件内容直接传输到数据库中:

run(pipeline(`mysql -hhost -uusername -ppassword db_name`; stdin="data.sql"))

(根据需要替换 host、用户名、密码、db_name 和文件名)


PS。我不太熟悉 sql 中的 "INFILE" 选项。如果输入不是 .sql 文件而是 .csv 文件,您可以在 julia 中处理该文件以生成适当的 sql 语句以代替手动执行

我想我有:

import MySQL;

conn = MySQL.mysql_connect(host, username, password, database; opts = Dict(MySQL.MYSQL_OPT_LOCAL_INFILE=>1));

command = string("LOAD DATA LOCAL INFILE 'infile' INTO TABLE temp_table FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '\"';")

MySQL.mysql_execute(conn, command)

请确认。 :)


PS:如上面评论所述,您可能必须先在 mysql-server 配置中启用 local-infile,如 here 所述.