加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

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

发布时间:2020-12-16 06:12:43 所属栏目:大数据 来源:网络整理
导读:我正在尝试使用perl将CSV文件上传到 mysql数据库.我的perl脚本将驻留在服务器上,我将通过浏览器访问该服务器.在浏览器中,将有一个上传文件的选项. 问题是,我到底要怎么做 我是否需要将该文件保存在服务器上的某个位置然后使用它? 我可以通过提供固定路径直
我正在尝试使用perl将CSV文件上传到 mysql数据库.我的perl脚本将驻留在服务器上,我将通过浏览器访问该服务器.在浏览器中,将有一个上传文件的选项.

问题是,我到底要怎么做

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

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

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 'bigmacbm_srchtmlcgi-bintestbrocade$filename' INTO TABLE customPricingTest FIELDS TERMINATED BY ','";
$sth = $dbh->do($query) or die "SQL Error: $DBI::errstrn"; 

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

}

已编辑 – >上面的代码为用户抛出错误Access Denied.我成功地能够在服务器上创建文件,但看起来我正在获取访问它的错误.任何想法?

谢谢,
Nitesh

解决方法

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读