Amazon Redshift
クラスター管理ガイド (API バージョン 2012年12月1日)


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

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

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

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



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


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

package connection; import java.sql.*; import java.util.Properties; public class Docs { //Redshift driver: "jdbc:redshift://"; //or "jdbc:postgresql://"; 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: //Redshift JDBC 4 driver: Class.forName(""); //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({ //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 を使用します。

using System; using System.Data; using System.Data.Odbc; namespace { class ConnectToClusterExample { public static void Main(string[] args) { DataSet ds = new DataSet(); DataTable dt = new DataTable(); // Server, e.g. "" 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(); } } } }