0

我正在编写一个简单的脚本来使用 perl 程序将文件列表上传到 mysql 中的表。每当我需要上传文件时,我通常可以使用“--local-infile”标志手动启动 mysql。我也使用 perl 来使用 DBI 获取 mysql 数据库中的表信息:

$dbh = DBI->connect("DBI:mysql:$db:$host", $user, $pass);

但我不知道如何使用 perl 和上传文件所需的标志来启动 mysql。有没有办法通过本地启用在 perl 中启动与 mysql 的连接?或者,有没有可以在 mysql 中运行的命令来启用上传文件?我应该补充一点,我在远程主机上运行,​​所以我没有对 my.cnf 文件的编辑访问权限或 mysql 中的 root 访问权限。

4

2 回答 2

1

就在这里:

$dbh = DBI->connect("DBI:mysql:$db:$host;mysql_local_infile=1", $user, $pass);

您也可以通过这种方式传递其他(局部)变量。请参阅DBD::mysql 的文档

于 2012-12-03T11:41:00.973 回答
0

首先,在 my.cnf的客户端下添加以下代码

[客户]

松散本地文件 = 1

然后添加参数;

mysql_local_infile=>1

以下,

$dbh = DBI->connect("DBI:mysql:$db:$host", $user, $pass, {mysql_local_infile=>1, RaiseError => 0, PrintError => 0, mysql_enable_utf8 => 1});

其他参数属于我的代码,但我将它们用于DBI->connect的使用示例。

于 2014-10-24T09:02:57.297 回答