Exécution d'un programme java sur redshift
Par exemple, j'ai codé le code php suivant et exécuté sur redshift comme ci-dessous.
<?php
$connect = pg_connect("host=xx.xxxx.us-east-1.redshift.amazonaws.com port=xxxx dbname=testdb user=xxxx password=xxxxxx");
$query = "select name, email from mytable LIMIT 7";
$result = pg_query($connect,$query);
while(($row = pg_fetch_array($result)) != null) {
$name = $row[0];
$email = $row[1];
echo $name." <<>> ".$email." <<>> ";
}
?>
J'ai enregistré le fichier php ci-dessus et exécuté de la manière ci-dessous.
myuser@ip-20-143-43-144:/home/myuser$ php runquery.php <Enter>
Ensuite, il me donne la sortie.
Je veux tester la même chose avec java. J'ai donc pris l'exemple d'aws et enregistré au même emplacement.
public class ConnectToCluster {
static final String dbURL = "jdbc:postgresql://xxxx.xxxxx.us-east-1.redshift.amazonaws.com:xxxx/testdb";
static final String MasterUsername = "XXXX";
static final String MasterUserPassword = "XXXXXX";
public static void main(String[] args) {
Connection conn = null;
Statement stmt = null;
try{
//Dynamically load postgresql driver at runtime.
Class.forName("org.postgresql.Driver");
//Open a connection and define properties.
System.out.println("Connecting to database...");
Properties props = new Properties();
//Uncomment the following line if using a keystore.
//props.setProperty("ssl", "true");
props.setProperty("user", MasterUsername);
props.setProperty("password", MasterUserPassword);
conn = DriverManager.getConnection(dbURL, props);
//Try a simple query.
System.out.println("Listing system tables...");
stmt = conn.createStatement();
String sql;
sql = "select * from information_schema.tables;";
ResultSet rs = stmt.executeQuery(sql);
//Get the data from the result set.
while(rs.next()){
//Retrieve two columns.
String catalog = rs.getString("table_catalog");
String name = rs.getString("table_name");
//Display values.
System.out.print("Catalog: " + catalog);
System.out.println(", Name: " + name);
}
rs.close();
stmt.close();
conn.close();
}catch(Exception ex){
//For convenience, handle all errors here.
ex.printStackTrace();
}finally{
//Finally block to close resources.
try{
if(stmt!=null)
stmt.close();
}catch(Exception ex){
}// nothing we can do
try{
if(conn!=null)
conn.close();
}catch(Exception ex){
ex.printStackTrace();
}
}
System.out.println("Finished connectivity test.");
}
}
J'ai également enregistré ce fichier .java
au même endroit. Alors, quelqu'un peut-il me dire comment exécuter ce fichier java sur commande comme je l'ai fait pour php.
1
1 answers
(1) Téléchargez un pilote JDBC postgresql à partir du lien suivant et placez-le dans le même répertoire de ConnectToCluster.Java.
(2) Ajoutez les lignes manquantes(importer la bibliothèque java) dans l'en-tête du fichier java.
import java.sql.*;
import java.util.*;
public class ConnectToCluster {
...
(3) Exécutez la commande suivante.
javac ConnectToCluster.java && java -cp .:postgresql-8.4-703.jdbc4.jar ConnectToCluster
1
Author: Masashi Miyazaki, 2014-01-20 21:24:08