繁体   English   中英

如何在SQL脚本中使用Perl变量(使用反引号)

[英]How to use a Perl variable in a SQL script (using backticks)

我已经看到了各种示例,但是我无法使用DBI。 如何在外部sql脚本中使用perl变量? 例如,我想要的perl脚本中的代码是:

$text = 'Germany';
@sql_output = `sqlplus -s user/pass\@databasename <<!
 @/pathtofile/test.sql;
  QUIT;
  !`;
print @sql_output;

sql脚本为:

SELECT DISTINCT City FROM Customers
Where Country = '$text'

(仅作为示例,我使用的代码来自w3schools.com sql教程http://www.w3schools.com/SQl/trysql.asp?filename=trysql_select_distinct

我通过搜索发现的一个例子有:

@/pathtofile/test.sql $text;

但是当我用代码尝试时,它不起作用。 这是将perl变量合并到外部sql脚本中的正确方法吗?

  1. 定义您的替换变量
  2. 根据您的test.sql内容在此处文档中使用它们
  3. 将其保存到test.sql
  4. 执行反引号命令

要么

  • 如果您想学习基本的SQL,请执行以下操作:安装具有允许交互式/临时查询的GUI的DBMS(例如SQLite / SQliteman / SQLite浏览器插件,MySQL / MySQLWorkbench,Access,OO / LO Base等)
  • 如果要使用Oracle,请:进行完整/有效的安装(如果脚本语言为Perl,则包括DBD:Oracle)

这一项工作,基本上流程如下

  1. 打开SQL文件
  2. 将$ text替换为变量值
  3. 将其写入临时文件
  4. 在临时文件上执行SQL plus(每次重新运行时,它将替换该文件)

试试吧,让我知道。

test.pl

#!/usr/bin/perl

$text = 'Germany1';
open(HEADER,"SQLQuery.sql");
while(<HEADER>) { $_ =~ s/\$text/$text/g; $output .= $_; }
close(HEADER);

print "$output";


open (MYFILE, '>SQLQueryTemp.sql'); 

print MYFILE $output;

close(MYFILE);

#SQLQueryTemp.sql contains the $text replaced with 'Germany'

#@sql_output = `sqlplus -s user/pass\@databasename <<!
 #@/pathtofile/SQLQueryTemp.sql;
  #QUIT;
  #!`;
#print @sql_output;

SQLQuery.sql

SELECT DISTINCT City FROM Customers
Where Country = '$text'

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM