从脚本运行五个SQL查询

时间:2012-07-11 23:16:01

标签: python sql perl hive

我需要运行Five SQLquerySequentially表示逐个或Independently。目前我正在做的是,我需要在一个Five SQL query中按顺序运行所有这些Putty session,或者我可以打开五个Putty Session并在这五个Putty会话中分别输入一个查询。所以它非常繁琐,我需要手动运行它。所以我想要自动化这个过程。

有没有办法使用某种类型的脚本,比如Perl Script或Python脚本,我可以从中顺序或独立地运行我的所有五个查询?

我的情况下的查询有点复杂而且很长但是考虑到上面的情况,我将以下五个查询作为示例 - 并且这五个查询彼此无关。还有我使用Hive运行的这五个SQL查询。

SELECT * FROM Table1;
SELECT * FROM Table2;
SELECT * FROM Table3;
SELECT * FROM Table4;
SELECT * FROM Table5;

所以我的问题是我怎么能用任何脚本语言来做?此外,我并不特定于任何脚本,只是想知道在我的情况下哪种方法更好。任何满足我要求的代码片段都将受到赞赏。

我正在使用HiveQL,HiveQL语法与SQL Sytnax相同。

P.S。我是所有脚本语言的新手。

1 个答案:

答案 0 :(得分:2)

有很多方法可以做到这一点,这是一个非常基本的例子。结果是,在Perl中,您只需按所需顺序放置“执行”命令即可控制执行顺序。我假设您熟悉Perl DBI以及如何连接到您的dbase。

#!/usr/bin/perl 
use DBI; 
use strict; 

my $dbh = DBI->connect($your_connect_string) || die qq{Could not connect to $dbase\n};     
my $sql_1 = qq{ select * from table1}; 
my $sql_2 = qq{ select * from table2};
my $sql_3 = qq{ select * from table3};

my $sth_1 = $dbh->prepare($sql_1); 
my $sth_2 = $dbh->prepare($sql_2);
my $sth_3 = $dbh->prepare($sql_3);

$sth_1->execute();
$sth_2->execute();
$sth_3->execute();

while (my $hashref_1 = $sth_1->selectrow_hashref()) { 
...do something
} 

while (my $hashref_2 = $sth_2->selectrow_hashref()) { 
...do something
} 

while (my $hashref_3 = $sth_3->selectrow_hashref()) { 
...do something
} 

$sth_1->finish(); 
$sth_2->finish(); 
$sth_3->finish(); 

$dbh->disconnect(); 

exit;
相关问题