-4

私はFive SQLquery実行する必要があることを持っています、Sequentiallyつまり1つずつまたはIndependently。現在私が行っているのは、これらすべてFive SQL queryを1つで順番に実行する必要があるか、 Putty session5つ開いPutty Sessionて、5つのパテセッションにそれぞれ1つのクエリを入力することです。そのため、非常に面倒で、手動で実行する必要があります。だから私はプロセスを自動化することを考えていました。

PerlスクリプトやPythonスクリプトなど、5つのクエリすべてを順次または独立して実行できるスクリプトを使用する方法はありますか?

私の場合のクエリは少し複雑で長いですが、上記のシナリオを考慮して、以下の5つのクエリを例として取り上げています。これらの5つのクエリは互いに関連していません。また、Hiveを使用して実行しているこれらの5つのSQLクエリ。

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

だから私の質問は、どのスクリプト言語でそれを行うことができるかということです。また、私はどのスクリプトにも固有ではありません。私の場合、どちらがより良いアプローチであるかを知りたかっただけです。私の要件を満たすコードスニペットはありがたいです。

私はHiveQLを使用していますが、HiveQLの構文はSQLSytnaxと同じです。

PS私はすべてのスクリプト言語に不慣れです。

4

1 に答える 1

2

これを行うには多くの方法があり、これはかなり基本的な例です。結果として、Perlでは、「実行」コマンドを目的の順序で配置するだけで、実行の順序を制御できます。PerlDBIと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;
于 2012-07-12T01:01:20.617 に答える