gpt4 book ai didi

mysql - 在 perl 中使用 LOAD DATA INFILE 在 MYSQL 中插入值

转载 作者:可可西里 更新时间:2023-11-01 07:41:57 25 4
gpt4 key购买 nike

我正在尝试使用 perl 将 CSV 文件上传到 mysql 数据库。我的 perl 脚本将驻留在服务器上,我将通过浏览器访问它。在浏览器中,将有一个上传文件的选项。

问题是,我到底要怎么做

  1. 我是否需要将该文件保存在服务器上的某个位置然后使用它?
  2. 我可以通过提供固定路径直接使用笔记本电脑中的文件吗?

到目前为止,我尝试这样做

if($update eq "fullLoad"){
$filename = param("customPricing");


my $upload_filehandle = upload("customPricing");
open ( UPLOADFILE, ">$filename" ) or die "$!";

binmode UPLOADFILE;
while ( <$upload_filehandle> )
{
print UPLOADFILE;
}
close UPLOADFILE;


$query = "LOAD DATA INFILE '\bigmac\bm_src\html\cgi-bin\testbrocade\$filename' INTO TABLE customPricingTest FIELDS TERMINATED BY ','";
$sth = $dbh->do($query) or die "SQL Error: $DBI::errstr\n";

print $sth . "Records Uploaded <br/>";

已编辑 --> 上面的代码抛出错误 Access Denied for user 。我能够成功地在服务器上创建文件,但看起来我在访问它时遇到错误。有什么想法吗?

谢谢,尼特什

最佳答案

在回答问题 1 时:如果您正在使用 LOAD DATA INFILE,是的,服务器系统和数据库用户需要可以访问该文件。如果您使用LOAD DATA LOCAL INFILE,文件可以保留在一个单独的系统上,由 Perl 脚本运行,并在网络连接中上传数据。两者之间存在权限和设置差异,但两种方式的性能都非常好,无论是本地加载数据还是远程加载数据,我们都没有看到巨大差异。

对于第二个问题,这就是LOAD DATA LOCAL INFILE的作用。在这里,因为文件是通过 DBI 连接读取和传递的,所以文件路径需要相对于脚本运行的位置。它不需要像 LOAD DATA INFILE 那样是绝对的。它甚至不需要是固定路径。我们已经成功地将临时文件用于此目的,只要在您与数据库断开连接之前不删除这些文件即可。

关于mysql - 在 perl 中使用 LOAD DATA INFILE 在 MYSQL 中插入值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6930682/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com