从perl中带有变量dir的sql文件中读取sql语句

时间:2018-05-18 08:29:51

标签: sql postgresql perl

您好我正在尝试使用perl读取sql文件以在数据库上执行(出于测试目的,我只是从sql文件中打印获取的sql查询)。现在我有一个工作子例程,它将从sql文件中获取sql查询并打印此

my $sqlfile = get_sql_from_file("SQL\lastVacuum.sql");
print $sqlfile;

sub get_sql_from_file {
    open my $fh, '<', shift or die "Can't open SQL File for reading: $!";
    local $/;
    return <$fh>;
};

但我希望sql文件位于变量目录中,所以我试图将dir添加到字符串中。

    $SQLdir = "C:\Users\Bilal\Desktop\postgres\sql\postgres"; 
    my $sqlfile = get_sql_from_file("SQL" , $SQLdir ,"/postgres/lastVacuum.sql"); 
    print $sqlfile;

但我一直在&#34;无法打开SQL文件进行阅读:权限被拒绝&#34;。这是因为我从C盘读过......

我真的很坚持这个很长一段时间,我希望有人可以帮助我朝着正确的方向前进

1 个答案:

答案 0 :(得分:1)

您的文件阅读过程是正确的。但是当你在子程序中传递参数时,它需要3个参数。连接请遵循以下语法:

$SQLdir = "C:\Users\Bilal\Desktop\postgres\sql\postgres"; 
my $T_SQLdir = "$SQLdir" . "/postgres/lastVacuum.sql"
my $sqlfile = get_sql_from_file($T_SQLdir); 
print $sqlfile;

$SQLdir = "C:\Users\Bilal\Desktop\postgres\sql\postgres"; my $T_SQLdir = "$SQLdir" . "/postgres/lastVacuum.sql" my $sqlfile = get_sql_from_file($T_SQLdir); print $sqlfile;
这里我只传递一个带有正确sql文件路径的参数。