perl使用postgresql的copy问题 100

my$dbh=DBI->connect($dsn,$userid,$password,{RaiseError=>1})ordie$DBI::errstr;my$rv=$d... my $dbh = DBI->connect($dsn, $userid, $password, { RaiseError => 1 }) or die $DBI::errstr;
my $rv=$dbh->do("copy data_yhm FROM '/home/kettle/yhm/aaa.data' DELIMITER '|'");
--------------使用copy是会报错,必须使用超级用户。但是我没有超级数据库用户的权限。
DBD::Pg::db do failed: ERROR: must be superuser to COPY to or from a file
HINT: Anyone can COPY to stdout or from stdin. psql's \copy command also works for anyone. at testPG_COPY.pl line 13.

my $dbh = DBI->connect($dsn, $userid, $password, { RaiseError => 1 }) or die $DBI::errstr;
my $rv=$dbh->do("\\copy data_yhm FROM '/home/kettle/yhm/aaa.data' DELIMITER '|'");
------------使用\\copy则报下面语法错误
DBD::Pg::db do failed: ERROR: syntax error at or near "\"
LINE 1: \copy data_yhm FROM '/home/kettle/yhm/aaa.data' DELIMITER '|...
^ at testPG_COPY.pl line 13.

我想用perl来导文件到数据库,遇到这个问题,请问应该如何解决和,或者有其它导文件方式?谢谢
展开
 我来答
匿名用户
2015-11-17
展开全部
my $dbh = DBI->connect($dsn, $userid, $password, { RaiseError => 1 }) or die $DBI::errstr;
my $sql=qq(copy data_yhm FROM '/home/kettle/yhm/aaa.data' DELIMITER '|');
my $sqle=$dbh->prepare($sql) 李李or die "120-Syntax error:$!\n";
$sqle->execute();
$dbh->commit;

按照这个代码试试,对于权拆橡限问题,你只哪御迟要把aaa.data,cp到其他路径,就可以了

更多追问追答
追问
你用的是管理员账号吗?copy一直会报must be superuser to COPY to or from a file
追答
你在perl里面要定义好,你的db用户,已经你的db用户,有没有权限读取aaa.data文件
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式