メニュー
Amazon Redshift
管理ガイド (API Version 2012-12-01)

クラスターにプログラムで接続する

このセクションでは、クラスターにプログラムで接続する方法を示します。クライアント接続を管理する SQL Workbench/J のようなアプリケーションを使用している場合は、このセクションをスキップできます。

Java の使用によるクラスターへの接続

Java を使用してプログラムでクラスターに接続する場合、サーバー認証の使用は任意です。サーバー認証を使用する予定がある場合は、「接続のセキュリティオプションを設定する」の手順どおりに操作を行って、Amazon Redshift サーバー証明書をキーストアに格納します。キーストアを参照するには、コード実行時にプロパティを次のように指定します。

Copy
-Djavax.net.ssl.trustStore=<path to keystore> -Djavax.net.ssl.trustStorePassword=<keystore password>

例 : Java を使ってクラスターに接続する

次の例では、クラスターに接続し、システムテーブルを返すサンプルクエリを実行します。この例は、データベースにデータがなくても使用できます。

サーバー証明書でクラスターを認証する場合は、キーストアを使用する行のコメントアウトを解除します。

Copy
props.setProperty("ssl", "true");

サーバー証明書の詳細については、「接続のセキュリティオプションを設定する」を参照してください。

以下の例を実行するための詳しい手順については、「Eclipse を使用した Amazon Redshift の Java 実行例」を参照してください。

Copy
package connection; import java.sql.*; import java.util.Properties; public class Docs { //Redshift driver: "jdbc:redshift://x.y.us-west-2.redshift.amazonaws.com:5439/dev"; //or "jdbc:postgresql://x.y.us-west-2.redshift.amazonaws.com:5439/dev"; static final String dbURL = "***jdbc cluster connection string ****"; static final String MasterUsername = "***master user name***"; static final String MasterUserPassword = "***master user password***"; public static void main(String[] args) { Connection conn = null; Statement stmt = null; try{ //Dynamically load driver at runtime. //Redshift JDBC 4.1 driver: com.amazon.redshift.jdbc41.Driver //Redshift JDBC 4 driver: com.amazon.redshift.jdbc4.Driver Class.forName("com.amazon.redshift.jdbc41.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."); } }

.NET の使用によるクラスターへの接続

.NET (C#) を使用してプログラムでクラスターに接続する場合、サーバー認証の使用は任意です。サーバー認証を使用する予定がある場合は、「接続のセキュリティオプションを設定する」の手順どおりに操作を行って Amazon Redshift サーバー証明書をダウンロードし、.NET コードに合った形式で証明書を設定します。

例 .NET を使ってクラスターに接続する

次の例では、クラスターに接続し、システムテーブルを返すサンプルクエリを実行します。サーバー認証は表示されません。この例は、データベースにデータがなくても使用できます。この例では、System.Data.Odbc Namespace、.NET Framework Data Provider for ODBC を使用します。

Copy
using System; using System.Data; using System.Data.Odbc; namespace redshift.amazon.com.docsamples { class ConnectToClusterExample { public static void Main(string[] args) { DataSet ds = new DataSet(); DataTable dt = new DataTable(); // Server, e.g. "examplecluster.xyz.us-west-2.redshift.amazonaws.com" string server = "***provide server name part of connection string****"; // Port, e.g. "5439" string port = "***provide port***"; // MasterUserName, e.g. "masteruser". string masterUsername = "***provide master user name***"; // MasterUserPassword, e.g. "mypassword". string masterUserPassword = "***provide master user password***"; // DBName, e.g. "dev" string DBName = "***provide name of database***"; string query = "select * from information_schema.tables;"; try { // Create the ODBC connection string. //Redshift ODBC Driver - 64 bits /* string connString = "Driver={Amazon Redshift (x64)};" + String.Format("Server={0};Database={1};" + "UID={2};PWD={3};Port={4};SSL=true;Sslmode=Require", server, DBName, masterUsername, masterUserPassword, port); */ //Redshift ODBC Driver - 32 bits string connString = "Driver={Amazon Redshift (x86)};" + String.Format("Server={0};Database={1};" + "UID={2};PWD={3};Port={4};SSL=true;Sslmode=Require", server, DBName, masterUsername, masterUserPassword, port); // Make a connection using the psqlODBC provider. OdbcConnection conn = new OdbcConnection(connString); conn.Open(); // Try a simple query. string sql = query; OdbcDataAdapter da = new OdbcDataAdapter(sql, conn); da.Fill(ds); dt = ds.Tables[0]; foreach (DataRow row in dt.Rows) { Console.WriteLine(row["table_catalog"] + ", " + row["table_name"]); } conn.Close(); Console.ReadKey(); } catch (Exception ex) { Console.Error.WriteLine(ex.Message); Console.ReadKey(); } } } }