我需要运行Five SQLquery
,Sequentially
表示逐个或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。我是所有脚本语言的新手。
答案 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;