-4

我有Five SQLquery我需要运行的,要么Sequentially是一个接一个,要么是Independently. 目前我正在做的是,我需要Five SQL query在一个中按顺序运行所有这些,Putty session或者我可以打开五个Putty Session并在这五个 Putty 会话中分别输入一个查询。所以它非常乏味,我需要手动运行它。所以我在考虑自动化这个过程。

有什么方法可以使用某种脚本,例如 Perl 脚本或 Python 脚本,我可以从中依次或独立地运行我的所有五个查询?

就我而言,查询有点复杂且冗长,但考虑到上述情况,我以以下五个查询为例 - 这五个查询彼此不相关。还有我使用 Hive 运行的这五个 SQL 查询。

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

所以我的问题是如何用任何脚本语言做到这一点?此外,我并不特定于任何脚本,只是想知道在我的情况下哪种方法更好。任何满足我要求的代码片段将不胜感激。

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

PS 我是所有脚本语言的新手。

4

1 回答 1

2

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

#!/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;
于 2012-07-12T01:01:20.617 回答