

 Amazon Redshift 將不再支援從修補程式 198 開始建立新的 Python UDFs。現有 Python UDF 將繼續正常運作至 2026 年 6 月 30 日。如需詳細資訊，請參閱[部落格文章](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/)。

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 使用 SQL 用戶端工具連線至 Amazon Redshift 資料倉儲
<a name="connecting-to-cluster"></a>

您可以從 SQL 用戶端工具透過 Java 資料庫連線 (JDBC)、Python 和開放式資料庫連線 (ODBC) 的連線來連線至 Amazon Redshift 資料倉儲。Amazon Redshift 不會提供或安裝任何 SQL 用戶端工具或程式庫。若要使用這些工具或程式庫來處理資料倉儲中的資料，請將其安裝在用戶端電腦或 Amazon EC2 執行個體上。您可以使用支援 JDBC、Python 或 ODBC 驅動程式的大多數 SQL 用戶端工具。

使用本主題結尾的章節清單，可協助您逐步完成將用戶端電腦或 Amazon EC2 執行個體設定為使用 JDBC、Python 或 ODBC 連線的程序。這些主題也會討論用戶端與伺服器連線的相關安全選項。此外，請尋找有關從 SQL 用戶端工具 (例如 [Amazon Redshift RSQL](https://docs.aws.amazon.com/redshift/latest/mgmt/rsql-query-tool.html)) 進行設定和連線的資訊。如果您還沒有商業智慧工具可使用，則可以嘗試這些工具。您也可以利用本節來了解如何連線至叢集。最後，如果您在嘗試連線至資料倉儲時遇到問題，您可以檢閱故障診斷資訊來找出解決方案。

## 透過用戶端工具連線的建議
<a name="connecting-to-cluster-recommendations"></a>

如果您使用 IP 位址連線至 Redshift 叢集，當發生中斷或連線中斷，且叢集在新的可用區域 (AZ) 中上線時，可能會導致更長的停機時間。不過，如果您仍希望應用程式使用 IP 位址連線到 Redshift，請使用附加到叢集的虛擬私有雲端 (VPC) 端點的私有 IP 位址。您可以在**屬性**索引標籤下，於**網路和安全**的叢集詳細資訊中找到此資訊。

**注意**  
如果您的應用程式使用領導節點的 IP 位址來存取 Redshift 叢集，則建議的最佳實務是改為使用叢集端點 URL。如需詳細資訊，請參閱[在 Amazon Redshift 中設定連線](https://docs.aws.amazon.com/redshift/latest/mgmt/configuring-connections.html)。

**Topics**
+ [透過用戶端工具連線的建議](#connecting-to-cluster-recommendations)
+ [在 Amazon Redshift 中設定連線](configuring-connections.md)
+ [設定連線的安全選項](connecting-ssl-support.md)
+ [從用戶端工具和程式碼連線](connecting-via-client-tools.md)
+ [使用身分驗證設定檔連線至 Amazon Redshift](connecting-with-authentication-profiles.md)
+ [針對 Amazon Redshift 中的連線問題進行疑難排解](troubleshooting-connections.md)

# 在 Amazon Redshift 中設定連線
<a name="configuring-connections"></a>

在下一節中，您會了解如何設定 JDBC、Python 和 ODBC 連線，以從 SQL 用戶端工具連線至叢集。本節描述如何設定 JDBC、Python 和 ODBC 連線。也描述如何使用 Secure Sockets Layer (SSL) 和伺服器憑證，以加密用戶端與伺服器之間的通訊。

## 適用於 Amazon Redshift 的 JDBC、Python 和 ODBC 驅動程式
<a name="connecting-drivers"></a>

若要處理叢集中的資料，您必須具有 JDBC、Python 或 ODBC 驅動程式，以便從用戶端電腦或執行個體來連線。將應用程式編寫為使用 JDBC、Python 或 ODBC 資料存取 API 操作，並使用支援 JDBC、Python 或 ODBC 的 SQL 用戶端工具。

Amazon Redshift 提供了 JDBC、Python 和 ODBC 驅動程式供您下載。支援這些驅動程式 支援。PostgreSQL 驅動程式未經過測試，因此未獲得 Amazon Redshift 團隊的支援。在連線至 Amazon Redshift 叢集時，請使用 Amazon Redshift 特定的驅動程式。Amazon Redshift 驅動程式有下列優點：
+ 支援 IAM、SSO 和聯合身分驗證。
+ 支援新的 Amazon Redshift 資料類型。
+ 支援身分驗證設定檔。
+ 與 Amazon Redshift 增強功能搭配使用而提升了效能。

 如需如何下載 JDBC 和 ODBC 驅動程式及設定叢集連線的相關資訊，請參閱 [設定適用於 Amazon Redshift 的 JDBC 驅動器 2.x 版的連線](jdbc20-install.md)、[Amazon Redshift Python 連接器](python-redshift-driver.md) 和 [設定 Amazon Redshift ODBC 驅動程式 2.x 版連線](odbc20-install.md)。

如需如何管理 IAM 身分的相關資訊 (包括 IAM 角色的最佳實務)，請參閱 [Amazon Redshift 中的身分和存取管理](redshift-iam-authentication-access-control.md)。

# 尋找叢集連線字串
<a name="connecting-connection-string"></a>

若要使用 SQL 用戶端工具來連線至叢集，您必須有叢集連線字串。您可以在 Amazon Redshift 主控台的叢集詳細資訊頁面上找到叢集連線字串。

**尋找叢集的連線字串**

1. 登入 AWS 管理主控台 ，並在 [https://console.aws.amazon.com/redshiftv2/](https://console.aws.amazon.com/redshiftv2/)：// 開啟 Amazon Redshift 主控台。

1. 在導覽功能表上，選擇**叢集**，然後從清單中選擇叢集名稱以開啟其詳細資訊。

1. **General information** (一般資訊) 區段中提供了 **JDBC URL** 和 **ODBC URL** 連線字串，以及其他詳細資訊。每個字串都以叢集執行 AWS 的區域為基礎。按一下適當連線字串旁邊的圖示以複製連線字串。

若要連線至叢集端點，您可以從 [DescribeClusters API 請求](https://docs.aws.amazon.com/redshift/latest/APIReference/API_DescribeClusters.html)使用叢集端點 URL。以下是叢集端點 URL 的範例。

```
mycluster.cmeaswqeuae.us-east-2.redshift.amazonaws.com
```

如果您已經為叢集設定了自訂網域名稱，您也可以使用該名稱來連線至叢集。如需建立自訂網域名稱的相關資訊，請參閱[設定自訂網域名稱](https://docs.aws.amazon.com/redshift/latest/mgmt/connecting-connection-CNAME-connect.html)。

**注意**  
連線時，請勿使用叢集節點的 IP 地址或 VPC 端點的 IP 地址。請一律使用 Redshift 端點，以避免發生不必要的中斷。唯一會使用端點 URL 的例外狀況是當您使用自訂網域名稱時。如需詳細資訊，請參閱[使用自訂網域名稱來進行用戶端連線](https://docs.aws.amazon.com/redshift/latest/mgmt/connecting-connection-CNAME.html)。

# 設定適用於 Amazon Redshift 的 JDBC 驅動器 2.x 版的連線
<a name="jdbc20-install"></a>

您可以從許多第三方 SQL 用戶端工具使用 JDBC 驅動器 2.x 版連線來連線至 Amazon Redshift 叢集。Amazon Redshift JDBC 連接器會提供開放原始碼的解決方案。您可以瀏覽原始碼、請求增強功能、回報問題並提供貢獻。

如需 JDBC 驅動器變更的最新資訊，請參閱[變更日誌](https://github.com/aws/amazon-redshift-jdbc-driver/blob/master/CHANGELOG.md)。

依預設，Amazon Redshift JDBC 驅動程式會設定為使用 TCP 保持連線，以防止連線逾時。您可以指定驅動程式何時開始傳送保持連線封包，或在連線 URL 中設定相關屬性來關閉此功能。如需連線 URL 語法的相關資訊，請參閱[建置連線 URL](jdbc20-build-connection-url.md)。


| 屬性 | Description | 
| --- | --- | 
|  `TCPKeepAlive`  |  若要關閉 TCP 保持連線，請將此屬性設定為 `FALSE`。  | 

**Topics**
+ [下載 Amazon Redshift JDBC 驅動程式 2.1 版](jdbc20-download-driver.md)
+ [安裝 Amazon Redshift JDBC 驅動程式 2.2 版](jdbc20-install-driver.md)
+ [取得 JDBC URL](jdbc20-obtain-url.md)
+ [建置連線 URL](jdbc20-build-connection-url.md)
+ [使用 Apache Maven 設定 JDBC 連線](configure-jdbc20-connection-with-maven.md)
+ [設定身分驗證和 SSL](jdbc20-configure-authentication-ssl.md)
+ [設定 記錄](jdbc20-configuring-logging.md)
+ [資料類型轉換](jdbc20-data-type-mapping.md)
+ [使用預備陳述式支援](jdbc20-prepared-statement-support.md)
+ [JDBC 驅動程式的 2.2 和 1.x 版本之間的差異](jdbc20-jdbc10-driver-differences.md)
+ [建立 JDBC 驅動器 2.x 版的初始化 (.ini) 檔案](jdbc20-ini-file.md)
+ [JDBC 驅動器 2.x 版組態的選項](jdbc20-configuration-options.md)
+ [JDBC 驅動器 2.x 版之前的版本](jdbc20-previous-driver-version-20.md)

# 下載 Amazon Redshift JDBC 驅動程式 2.1 版
<a name="jdbc20-download-driver"></a>

**注意**  
Amazon Redshift JDBC 2.x 驅動器並非專為執行緒安全所設計。若有兩個或多個執行緒嘗試以並行方式使用相同連線，可能會導致死結、錯誤、不正確的結果或其他非預期的行為。  
如果您擁有多執行緒應用程式，建議您同步驅動器的存取，以避免並行存取。

Amazon Redshift 為與 JDBC 4.2 API 相容的工具提供了驅動程式。此驅動程式的類別名稱為 `com.amazon.redshift.Driver`。

如需如何安裝 JDBC 驅動程式、參考 JDBC 驅動程式庫，以及註冊驅動程式類別的詳細資訊，請參閱下列主題。

對於您使用 Amazon Redshift JDBC 驅動器 2.x 版的每部電腦，請確定其已安裝 Java 執行階段環境 (JRE) 8.0。

如果您使用 Amazon Redshift JDBC 驅動程式進行資料庫身分驗證，請確定您在 Java 類別路徑中具有 適用於 Java 的 AWS SDK 1.11.118 或更新版本。如果您尚未 適用於 Java 的 AWS SDK 安裝 ，請使用 AWS 開發套件的 JDBC 4.2 相容驅動程式和驅動程式相依程式庫下載 ZIP 檔案：
+ [JDBC 4.2 相容驅動程式 2.x 版和 AWS SDK 驅動程式相依程式庫](https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.2.5/redshift-jdbc42-2.2.5.zip) 

  此 ZIP 檔案包含 JDBC 4.2 相容驅動器 2.x 版和適用於 Java 的 AWS SDK 1.x 驅動器相依程式庫檔案。將相依 jar 檔案解壓縮到與 JDBC 驅動程式相同的位置。只有 JDBC 驅動程式需要在 CLASSPATH 中。

  此 ZIP 檔案不包含適用於 Java 1.x 的完整 AWS SDK。不過，它包含 AWS Identity and Access Management (IAM) 資料庫身分驗證所需的適用於 Java 的 AWS SDK 1.x 驅動程式相依程式庫。

  將此 Amazon Redshift JDBC 驅動程式與 IAM 資料庫身分驗證所需的 AWS SDK 搭配使用。

  若要安裝適用於 Java 1.x 的完整 AWS 開發套件，請參閱《 *適用於 Java 的 AWS SDK 開發人員指南*》中的[AWS 適用於 Java 1.x 的開發套件](https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/welcome.html)。
+ 與 [JDBC 4.2 相容的驅動程式 2.x 版 （不含 AWS SDK)](https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.2.5/redshift-jdbc42-2.2.5.jar) 

檢閱 JDBC 驅動器 2.x 版軟體授權和變更日誌檔案：
+ [JDBC 驅動器 2.x 版授權](https://github.com/aws/amazon-redshift-jdbc-driver/blob/master/LICENSE) 
+ [JDBC 驅動器 2.x 版變更日誌](https://github.com/aws/amazon-redshift-jdbc-driver/blob/master/CHANGELOG.md)

JDBC 驅動程式 1.2.27.1051 版和更新版本支援 Amazon Redshift 預存程序。如需詳細資訊，請參閱《Amazon Redshift 資料庫開發人員指南》**中的[在 Amazon Redshift 中建立預存程序](https://docs.aws.amazon.com/redshift/latest/dg/stored-procedure-overview.html)。

# 安裝 Amazon Redshift JDBC 驅動程式 2.2 版
<a name="jdbc20-install-driver"></a>

若要安裝適用於 AWS SDK 的 Amazon Redshift JDBC 4.2 相容驅動程式 2.x 版和驅動程式相依程式庫，請將 ZIP 封存檔中的檔案擷取至您選擇的目錄。

若要安裝 Amazon Redshift JDBC 4.2 相容驅動器 2.x 版 (不含 AWS SDK)，請將 JAR 檔案複製到您選擇的目錄。

若要使用 Amazon Redshift JDBC 驅動程式存取 Amazon Redshift 資料存放區，您需要如下所述地執行組態。

**Topics**
+ [參考 JDBC 驅動程式庫](jdbc20-driver-libraries.md)
+ [註冊驅動程式類別](jdbc20-register-driver-class.md)

# 參考 JDBC 驅動程式庫
<a name="jdbc20-driver-libraries"></a>

您用來連線至資料的 JDBC 應用程式或 Java 程式碼必須存取驅動程式 JAR 檔案。請在應用程式或程式碼中，指定您從 ZIP 封存檔中解壓縮的所有 JAR 檔案。

## 在 JDBC 應用程式中使用驅動程式
<a name="jdbc20-use-driver-jdbc-app"></a>

JDBC 應用程式通常會提供一組用於新增驅動程式庫檔案清單的組態選項。請使用所提供的選項，將 ZIP 封存檔中的所有 JAR 檔案納入為應用程式中驅動程式組態的一部分。如需詳細資訊，請參閱 DNS 應用程式的文件。

## 在 Java 程式碼中使用驅動程式
<a name="jdbc20-use-driver-java-code"></a>

您必須在類別路徑中包含所有驅動程式庫檔案。Java 執行階段環境會在此路徑中搜尋類別和其他資源檔案。如需詳細資訊，請參閱適當的 Java SE 文件，以便為您的作業系統設定類別路徑。
+ Windows：[https://docs.oracle.com/javase/7/docs/technotes/tools/windows/classpath.html](https://docs.oracle.com/javase/7/docs/technotes/tools/windows/classpath.html)
+ Linux 和 Solaris：[https://docs.oracle.com/javase/7/docs/technotes/tools/solaris/classpath.html](https://docs.oracle.com/javase/7/docs/technotes/tools/solaris/classpath.html)
+ macOS：預設 macOS 類別路徑是安裝 JDBC 驅動程式的目錄。

# 註冊驅動程式類別
<a name="jdbc20-register-driver-class"></a>

請務必為您的應用程式註冊適當的類別。您可以使用下列類別將 Amazon Redshift JDBC 驅動程式連線到 Amazon Redshift 資料存放區：
+ `Driver` 類別會擴展 `java.sql.Driver`。
+ `DataSource` 類別會擴展 `javax.sql.DataSource` 和 `javax.sql.ConnectionPoolDataSource`。

該驅動程式支援下列完整類別名稱 (與 JDBC 版本無關)：
+ `com.amazon.redshift.jdbc.Driver`
+ `com.amazon.redshift.jdbc.DataSource`

下列範例示範如何使用 DriverManager 類別建立 JDBC 4.2 連線。

```
            private static Connection connectViaDM() throws Exception
{
Connection connection = null;
connection = DriverManager.getConnection(CONNECTION_URL);
return connection;
}
```

下列範例示範如何使用 `DataSource` 類別建立連線。

```
 private static Connection connectViaDS() throws Exception
{
Connection connection = null;
11
Amazon Redshift JDBC Driver Installation and Configuration Guide
DataSource ds = new com.amazon.redshift.jdbc.DataSource
();
ds.setURL(CONNECTION_URL);
connection = ds.getConnection();
return connection;
}
```

# 取得 JDBC URL
<a name="jdbc20-obtain-url"></a>

您需要先知道叢集的 JDBC URL，才能從 SQL 用戶端工具連線至 Amazon Redshift 叢集。JDBC URL 採用下列格式：`jdbc:redshift://endpoint:port/database`

前面格式的欄位具有下列值。

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/redshift/latest/mgmt/jdbc20-obtain-url.html)

以下是 JDBC URL 範例：`jdbc:redshift://examplecluster.abc123xyz789.us-west-2.redshift.amazonaws.com:5439/dev`

如果您的 URL 值包含下列任何 URI 保留字元，則值必須經過 URL 編碼：
+  ; 
+  \$1 
+  \$1 
+  \$1 
+  [ 
+  ] 
+  & 
+  = 
+  ? 
+  空格 

例如，如果您的 `PWD` 值是 `password:password`，則使用該值的連線 URL 看起來如下：

`jdbc:redshift://redshift.company.us-west-1.redshift.amazonaws.com:9000/dev;UID=amazon;PWD=password%3Apassword`

如需如何取得 JDBC 連線的資訊，請參閱[尋找叢集連線字串](connecting-connection-string.md)。

如果用戶端電腦無法連線至資料庫，您可以對可能的問題進行疑難排解。如需詳細資訊，請參閱[針對 Amazon Redshift 中的連線問題進行疑難排解](troubleshooting-connections.md)。

# 建置連線 URL
<a name="jdbc20-build-connection-url"></a>

使用連線 URL 為您要存取的資料存放區提供連線資訊。以下是 Amazon Redshift JDBC 驅動器 2.x 版的連線 URL 格式。在這裡，[Host] 是 Amazon Redshift 伺服器的端點，[Port] 是伺服器用來接聽用戶端請求的傳輸控制通訊協定 (TCP) 連接埠號碼。

```
jdbc:redshift://[Host]:[Port]
```

以下是會指定某些選擇性設定的連線 URL 格式。

```
jdbc:redshift://[Host]:[Port]/[database];[Property1]=[Value];
[Property2]=[Value];
```

如果您的 URL 值包含下列任何 URI 保留字元，則值必須經過 URL 編碼：
+  ; 
+  \$1 
+  \$1 
+  \$1 
+  [ 
+  ] 
+  & 
+  = 
+  ? 
+  空格 

例如，如果您的 `PWD` 值是 `password:password`，則使用該值的連線 URL 看起來如下：

`jdbc:redshift://redshift.company.us-west-1.redshift.amazonaws.com:9000/dev;UID=amazon;PWD=password%3Apassword`

例如，假設您想要連線至 AWS上美國西部 (加利佛尼亞北部) 區域中 Amazon Redshift 叢集上的連接埠 9000。您也想要存取名為 `dev` 的資料庫，並使用資料庫使用者名稱和密碼來驗證連線。在此情況下，您會使用下列連線 URL。

```
jdbc:redshift://redshift.company.us-west-1.redshift.amazonaws.com:9000/dev;UID=amazon;PWD=amazon
```

您可以使用下列字元將組態選項與 URL 字串的其餘部分隔開：
+ ;
+ ?

例如，下面兩個 URL 字串是相等的：

```
jdbc:redshift://my_host:5439/dev;ssl=true;defaultRowFetchSize=100
```

```
jdbc:redshift://my_host:5439/dev?ssl=true;defaultRowFetchSize=100
```

您可以使用下列字元將 URL 字串中的組態選項彼此隔開：
+ ;
+ &

例如，下面兩個 URL 字串是相等的：

```
jdbc:redshift://my_host:5439/dev;ssl=true;defaultRowFetchSize=100
```

```
jdbc:redshift://my_host:5439/dev;ssl=true&defaultRowFetchSize=100
```

下列 URL 範例會指定日誌層級 6 以及日誌的路徑。

```
jdbc:redshift://redshift.amazonaws.com:5439/dev;DSILogLevel=6;LogPath=/home/user/logs;
```

請勿複製連線 URL 中的屬性。

如需可指定之組態選項的完整清單，請參閱 [JDBC 驅動器 2.x 版組態的選項](jdbc20-configuration-options.md)。

**注意**  
連線時，請勿使用叢集節點的 IP 地址或 VPC 端點的 IP 地址。請一律使用 Redshift 端點，以避免發生不必要的中斷。唯一會使用端點 URL 的例外狀況是當您使用自訂網域名稱時。如需詳細資訊，請參閱[使用自訂網域名稱來進行用戶端連線](https://docs.aws.amazon.com/redshift/latest/mgmt/connecting-connection-CNAME.html)。

# 使用 Apache Maven 設定 JDBC 連線
<a name="configure-jdbc20-connection-with-maven"></a>

Apache Maven 是軟體專案管理和理解工具。 適用於 Java 的 AWS SDK 支援 Apache Maven 專案。如需詳細資訊，請參閱《適用於 Java 的 AWS SDK 開發人員指南》**中的[搭配使用 SDK 與 Apache Maven](https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/setup-project-maven.html)。

如果您使用 Apache Maven，您可以將專案設定和建置為使用 Amazon Redshift JDBC 驅動程式來連線至 Amazon Redshift 叢集。若要執行此作業，請在專案的 `pom.xml` 檔案中，將 JDBC 驅動程式新增為相依性。如果您使用 Maven 來建置專案，且想要使用 JDBC 連線，請採取下節中的步驟。

**將 JDBC 驅動程式設定為 Maven 相依性**

1. 將 Amazon 儲存庫或 Maven Central 儲存庫新增到 `pom.xml` 檔案的儲存庫區段。
**注意**  
下列程式碼範例中的 URL 在瀏覽器中使用時會傳回錯誤。僅在 Maven 項目的內容中使用此 URL。

   若要使用 Secure Sockets Layer (SSL) 來連線，請將下列儲存庫新增至 `pom.xml` 檔案。

   ```
   <repositories>
       <repository>
         <id>redshift</id>
         <url>https://s3.amazonaws.com/redshift-maven-repository/release</url>
       </repository>
   </repositories>
   ```

   若為 Maven Central 儲存庫，請將以下內容新增到 `pom.xml` 檔案。

   ```
   <repositories>
       <repository>
         <id>redshift</id>
         <url>https://repo1.maven.org/maven2</url>
       </repository>
   </repositories>
   ```

1. 在 `pom.xml` 檔案的相依性區段中，宣告您要使用的驅動程式版本。

   Amazon Redshift 為與 JDBC 4.2 API 相容的工具提供了驅動程式。如需這些驅動程式所支援功能的相關資訊，請參閱[下載 Amazon Redshift JDBC 驅動程式 2.1 版](jdbc20-download-driver.md)。

   以您的驅動程式版本取代下列範例中的 `driver-version`，例如 `2.1.0.1`。若為 JDBC 4.2 相容驅動程式，請使用以下內容。

   ```
   <dependency>
      <groupId>com.amazon.redshift</groupId>
      <artifactId>redshift-jdbc42</artifactId>
      <version>driver-version</version>
   </dependency>
   ```

   此驅動程式的類別名稱為 `com.amazon.redshift.Driver`。

當您使用 IAM 資料庫身分驗證時，Amazon Redshift Maven 驅動程式需要下列選擇性相依性。

```
<dependency>
      <groupId>com.amazonaws</groupId>
      <artifactId>aws-java-sdk-core</artifactId>
      <version>1.12.23</version>
      <scope>runtime</scope>
      <optional>true</optional>
</dependency>
    <dependency>
      <groupId>com.amazonaws</groupId>
      <artifactId>aws-java-sdk-redshift</artifactId>
      <version>1.12.23</version>
      <scope>runtime</scope>
      <optional>true</optional>
</dependency>
<dependency>
      <groupId>com.amazonaws</groupId>
      <artifactId>aws-java-sdk-sts</artifactId>
      <version>1.12.23</version>
      <scope>runtime</scope>
      <optional>true</optional>
</dependency>
```

若要將 Amazon Redshift JDBC 驅動程式升級或變更為最新版本，請先將相依性的版本區段修改為驅動程式的最新版本。然後以 Maven Clean Plugin 來清理專案，如下所示。

```
mvn clean
```

# 設定身分驗證和 SSL
<a name="jdbc20-configure-authentication-ssl"></a>

為了防止有人未經授權就存取資料，Amazon Redshift 資料存放區會要求所有連線使用使用者憑證進行身分驗證。某些資料存放區還會要求必須透過 Secure Sockets Layer (SSL) 通訊協定來進行連線 (無論是否使用單向身分驗證)。

Amazon Redshift JDBC 驅動器 2.x 版會針對這些身分驗證通訊協定提供完整支援。

驅動程式支援的 SSL 版本取決於您使用的 JVM 版本。如需每個 Java 版本所支援之 SSL 版本的相關資訊，請參閱 Java Platform Group Product Management 部落格上的[診斷 TLS、SSL 和 HTTPS](https://blogs.oracle.com/java-platform-group/diagnosing-tls,-ssl,-and-https)。

用於連線的 SSL 版本是驅動程式和伺服器支援的最高版本，而這會在連線時確定。

將 Amazon Redshift JDBC 驅動器 2.x 版設定為根據您要連線之 Redshift 伺服器的安全需求驗證您的連線。

您一律必須提供 Redshift 使用者名稱和密碼來驗證連線。根據伺服器上是否啟用且需要 SSL，您可能還需要將驅動程式設定為透過 SSL 連接。或者，您也可以使用單向 SSL 身分驗證，以便用戶端 (驅動程式本身) 驗證伺服器的身分。

您要在連線 URL 中提供組態資訊給驅動程式。如需連線 URL 語法的相關資訊，請參閱[建置連線 URL](jdbc20-build-connection-url.md)。

*SSL* 表示 TLS/SSL，兩者分別是 Transport Layer Security 和 Secure Sockets Layer。此驅動程式支援業界標準的 TLS/SSL 版本。

## 設定 IAM 身分驗證
<a name="jdbc20-configure-iam-authentication"></a>

如果您要使用 IAM 身分驗證連線至 Amazon Redshift 伺服器，請將以下屬性設定為資料來源連線字串的一部分。

 如需 IAM 身分驗證的相關資訊，請參閱 [Amazon Redshift 中的身分和存取管理](redshift-iam-authentication-access-control.md)。

若要使用 IAM 身分驗證，請使用下列其中一種連線字串格式：


| 連接字串 | Description | 
| --- | --- | 
|  `jdbc:redshift:iam:// [host]:[port]/[db]`  |  一般連線字串。驅動程式會從主機推斷 ClusterID 和 Region。  | 
|  `jdbc:redshift:iam:// [cluster-id]: [region]/[db]`  |  驅動程式會擷取主機資訊 (在給定 ClusterID D 和 Region 的情況下)。  | 
|  `jdbc:redshift:iam:// [host]/[db]`  |  驅動程式會預設為連接埠 5439，並從主機推斷 ClusterID 和 Region。根據您在建立、修改或遷移叢集時所選取的連接埠而定，允許存取選取的連接埠。  | 

## 指定設定檔
<a name="jdbc20-aws-credentials-profiles"></a>

如果您要使用 IAM 身分驗證，則可以在設定檔名稱下指定任何其他必要或選擇性的連線屬性。這樣做可讓您避免將某些資訊直接放在連線字串中。您可以使用 Profile 屬性在連線字串中指定設定檔名稱。

設定檔可以新增至 AWS 登入資料檔案。此檔案的預設位置是：`~/.aws/credentials`。

您可以在下列環境變數中設定路徑來變更預設值：`AWS_CREDENTIAL_PROFILES_FILE`

 如需設定檔的相關資訊，請參閱《適用於 Java 的 AWS SDK》**中的[使用 AWS 憑證](https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/credentials.html)。

## 使用執行個體設定檔憑證
<a name="jdbc20-instance-profile-credentials"></a>

如果您要在與 IAM 角色關聯的 Amazon EC2 執行個體上執行應用程式，您可以使用執行個體設定檔憑證進行連線。

若要這麼做，請使用前述資料表中的其中一種 IAM 連線字串格式，並將 dbuser 連線屬性設定為您要用來連線的 Amazon Redshift 使用者名稱。

如需執行個體設定檔的相關資訊，請參閱《IAM 使用者指南》**中的[存取管理](https://docs.aws.amazon.com/IAM/latest/UserGuide/access.html)。

## 使用憑證提供者
<a name="jdbc20-aws-credentials-provider"></a>

此驅動程式也支援下列服務的憑證提供者外掛程式：
+ AWS IAM Identity Center
+ Active Directory Federation Service (ADFS)
+ JSON Web 權杖 (JWT) 服務
+ Microsoft Azure Active Directory (AD) 服務和瀏覽器 Microsoft Azure Active Directory (AD) 服務
+ Okta 服務
+ PingFederate 服務 
+ 適用於 SAML 服務的瀏覽器 SAML，例如 Okta、Ping 或 ADFS

如果您使用這些服務的其中一個，連線 URL 必須指定下列屬性：
+ **Plugin\$1Name** — 憑證提供者外掛程式類別的完整類別路徑。
+ **IDP\$1Host** — 您用來對 Amazon Redshift 進行身分驗證的服務主機。
+ **IdP\$1Port** — 用於身分驗證服務的主機監聽的連接埠。Okta 不需要此屬性。
+ **User** - idp\$1host 伺服器的使用者名稱。
+ **Password** - 與 idp\$1host 使用者名稱相關聯的密碼。
+ **DbUser** - 您用來連線的 Amazon Redshift 使用者名稱。
+ **SSL\$1Insecure** — 指出是否應驗證 IDP 伺服器憑證。
+ **Client\$1ID** - 與 Azure AD 入口網站中的使用者名稱相關聯的用戶端 ID。僅用於 Azure AD。
+ **Client\$1Secret** — 與 Azure AD 入口網站中的用戶端 ID 相關聯的用戶端祕密。僅用於 Azure AD。
+ **IdP\$1Tenant** — Amazon Redshift 應用程式的 Azure AD 租用戶 ID。僅用於 Azure AD。
+ **App\$1ID** — Amazon Redshift 應用程式的 Okta 應用程式 ID。僅用於 Okta。
+ **App\$1Name** — Amazon Redshift 應用程式的 Okta 應用程式名稱 (選擇性)。僅用於 Okta。
+ **Partner\$1SPID** — 選擇性的合作夥伴 SPID (服務提供者 ID) 值。僅用於 PingFederate。
+ **Idc\$1Region** – IAM Identity Center AWS 區域 AWS 執行個體所在的 。僅用於 AWS IAM Identity Center。
+ **Issuer\$1Url** – AWS IAM Identity Center 伺服器的執行個體端點。僅用於 AWS IAM Identity Center。

如果您使用這些服務其中之一的瀏覽器外掛程式，連線 URL 也可以包括：
+ **Login\$1URL** — 透過瀏覽器外掛程式使用安全性聲明標記語言 (SAML) 或 Azure AD 服務時，身分提供者網站上資源的 URL。如果您使用瀏覽器外掛程式，則必須要有此參數。
+ **Listen\$1Port** – 透過瀏覽器外掛程式使用 SAML、Azure AD 或 IAM Identity Center AWS 服務時，驅動程式用來從身分提供者取得 SAML 回應的連接埠。
+ **IdP\$1Response\$1Timeout** – 透過瀏覽器外掛程式使用 SAML、Azure AD 或 IAM Identity Center AWS 服務時，驅動程式等待來自身分提供者的 SAML 回應的時間，以秒為單位。

如需其他連線字串屬性的資訊，請參閱 [JDBC 驅動器 2.x 版組態的選項](jdbc20-configuration-options.md)。

# 僅使用使用者名稱和密碼
<a name="jdbc20-authentication-username-password"></a>

如果您要連線的伺服器未使用 SSL，您只需要提供 Redshift 使用者名稱和密碼即可驗證連線。

**僅使用 Redshift 使用者名稱和密碼來設定身分驗證**

1. 將 `UID` 屬性設定為用於存取 Amazon Redshift 伺服器的 Redshift 使用者名稱。

1. 將 PWD 屬性設定為與 Redshift 使用者名稱對應的密碼。

# 使用 SSL 但不進行身分驗證
<a name="jdbc20-use-ssl-without-identity-verification"></a>

如果您要連線的伺服器使用 SSL，但不需要進行身分驗證，則您可以將驅動程式設定為使用非驗證 SSL Factory。

**設定沒有身分驗證的 SSL 連線**

1. 將 `UID` 屬性設定為用於存取 Amazon Redshift 伺服器的 Redshift 使用者名稱。

1. 將 `PWD` 屬性設定為與 Redshift 使用者名稱對應的密碼。

1. 將 `SSLFactory` 屬性設定為 `com.amazon.redshift.ssl.NonValidatingFactory`。

# 使用單向 SSL 身分驗證
<a name="jdbc20-use-one-way-SSL-authentication"></a>

如果您要連線的伺服器使用 SSL 且具有憑證，則您可以將驅動程式設定為使用單向身分驗證來驗證伺服器的身分。

單向身分驗證需要已簽署的受信任 SSL 憑證來驗證伺服器的身分。您可以將驅動程式設定為使用特定憑證，或存取包含適當憑證的 TrustStore。如果您未指定憑證或 TrustStore，則驅動程式會使用預設的 Java TrustStore (一般是 `jssecacerts` 或 `cacerts`)。

**設定單向 SSL 身分驗證**

1. 將 UID 屬性設定為用於存取 Amazon Redshift 伺服器的 Redshift 使用者名稱。

1. 將 PWD 屬性設定為與 Redshift 使用者名稱對應的密碼。

1. 將 SSL 屬性設為 true。

1. 將 SSLRootCert 屬性設定為根 CA 憑證的位置。

1. 如果您未使用其中一個預設的 Java TrustStore，請執行以下其中一項操作：
   + 若要指定伺服器憑證，請將 SSLRootCert 屬性設定為憑證的完整路徑。
   + 若要指定 TrustStore，請執行以下操作：

     1. 使用 keytool 程式，將伺服器憑證新增至您要使用的 TrustStore。

     1. 指定要在使用驅動程式啟動 Java 應用程式時使用的 TrustStore 和密碼。例如：

        ```
        -Djavax.net.ssl.trustStore=[TrustStoreName]
        -Djavax.net.ssl.trustStorePassword=[TrustStorePassword]
        -Djavax.net.ssl.trustStoreType=[TrustStoreType]
        ```

1. 選擇一項：
   + 若要驗證憑證，請將 SSLMode 屬性設定為 verify-ca。
   + 若要驗證憑證並驗證憑證中的主機名稱，請將 SSLMode 屬性設定為 verify-full。

# 設定 記錄
<a name="jdbc20-configuring-logging"></a>

您可以在驅動程式中開啟日誌記錄功能，以協助診斷問題。

您可以使用下列方法記錄驅動程式資訊：
+ 若要將記錄的資訊儲存在 .log 檔案中，請參閱[使用日誌檔案](jdbc20-using-log-files.md)。
+ 若要將記錄的資訊傳送到 DriverManager 中指定的 LogStream 或 LogWriter，請參閱[使用 LogStream 或 LogWriter](jdbc20-logstream-option.md)。

您要在連線 URL 中提供組態資訊給驅動程式。如需連線 URL 語法的相關資訊，請參閱[建置連線 URL](jdbc20-build-connection-url.md)。

# 使用日誌檔案
<a name="jdbc20-using-log-files"></a>

日誌記錄功能應該要開啟到足以找到問題的時間長度就好。日誌記錄功能會降低效能，而且還會消耗大量磁碟空間。

在連線 URL 中設定 LogLevel 機碼以開啟日誌記錄功能，並指定日誌檔案中包含的詳細資訊數量。下表列出 Amazon Redshift JDBC 驅動器 2.x 版所提供的日誌記錄層級 (排序方式為最不詳細到最詳細)。


| LogLevel 值 | Description | 
| --- | --- | 
|  1  |  記錄會導致驅動程式中止的嚴重錯誤事件。  | 
|  2  |  記錄可能允許驅動程式繼續執行的錯誤事件。  | 
|  3  |  未採取動作時可能會導致錯誤的日誌事件。這個層級的日誌記錄和這個層級以上的日誌記錄層級也會記錄使用者的查詢。  | 
|  4  |  記錄用於描述驅動程式進展的一般資訊。  | 
|  5  |  記錄有助於偵錯驅動程式的詳細資訊。  | 
|  6  |  記錄所有驅動程式活動。  | 

**設定會使用日誌檔案的日誌記錄功能**

1. 將 LogLevel 屬性設定為要包含在日誌檔案中的所需資訊層級。

1. 將 LogPath 屬性設定為用來儲存日誌檔案之資料夾的完整路徑。

   例如，下列連線 URL 會啟用日誌記錄層級 3，並將日誌檔案儲存在 C:\$1temp 資料夾：`jdbc:redshift://redshift.company.us-west- 1.redshift.amazonaws.com:9000/Default;DSILogLevel=3;LogPath=C:\temp`

1. 若要確保新設定生效，請重新啟動 JDBC 應用程式並重新連線至伺服器。

   Amazon Redshift JDBC 驅動程式會在 LogPath 屬性中指定的位置產生下列日誌檔案：
   +  redshift\$1jdbc.log 檔案，會記錄非連線特定的驅動程式活動。
   + redshift\$1jdbc\$1connection\$1[Number].log 檔案，會針對向資料庫建立的每個連線產生此檔案，其中 [Number] 是用來識別每個日誌檔案的編號。此檔案會記錄連線特定的驅動程式活動。

如果 LogPath 值無效，則驅動程式會將日誌記錄資訊傳送至標準輸出串流 (`System.out`)

# 使用 LogStream 或 LogWriter
<a name="jdbc20-logstream-option"></a>

日誌記錄功能應該要開啟到足以找到問題的時間長度就好。日誌記錄功能會降低效能，而且還會消耗大量磁碟空間。

在連線 URL 中設定 LogLevel 機碼以開啟日誌記錄功能，並指定傳送至 DriverManager 中所指定 LogStream 或 LogWriter 的詳細資訊數量。

**若要開啟使用 LogStream 或 LogWriter 的日誌記錄功能：**

1. 若要設定驅動程式以記錄描述驅動程式進度的一般資訊，請將 LogLevel 屬性設定為 1 或 INFO。

1. 若要確保新設定生效，請重新啟動 JDBC 應用程式並重新連線至伺服器。

# 資料類型轉換
<a name="jdbc20-data-type-mapping"></a>

Amazon Redshift JDBC 驅動器 2.x 版支援許多常見的資料格式，可在 Amazon Redshift、SQL 和 Java 資料類型之間進行轉換。

下表列出支援的資料類型映射。


| Amazon Redshift 類型 | SQL 類型 | Java 類型 | 
| --- | --- | --- | 
|  BIGINT  |  SQL\$1BIGINT  |  Long  | 
|  BOOLEAN  |  SQL\$1BIT  |  Boolean  | 
|  CHAR  |  SQL\$1CHAR  |  String  | 
|  DATE  |  SQL\$1TYPE\$1DATE  |  java.sql.Date  | 
|  DECIMAL  |  SQL\$1NUMERIC  |  BigDecimal  | 
|  DOUBLE PRECISION  |  SQL\$1DOUBLE  |  Double  | 
|  GEOMETRY  |  SQL\$1 LONGVARBINARY  |  byte[]  | 
|  INTEGER  |  SQL\$1INTEGER  |  Integer  | 
|  OID  |  SQL\$1BIGINT  |  Long  | 
|  SUPER  |  SQL\$1LONGVARCHAR  |  String  | 
|  REAL  |  SQL\$1REAL  |  Float  | 
|  SMALLINT  |  SQL\$1SMALLINT  |  Short  | 
|  TEXT  |  SQL\$1VARCHAR  |  String  | 
|  TIME  |  SQL\$1TYPE\$1TIME  |  java.sql.Time  | 
|  TIMETZ  |  SQL\$1TYPE\$1TIME  |  java.sql.Time  | 
|  TIMESTAMP  |  SQL\$1TYPE\$1 TIMESTAMP  |  java.sql.Timestamp  | 
|  TIMESTAMPTZ  |  SQL\$1TYPE\$1 TIMESTAMP  |  java.sql.Timestamp  | 
|  VARCHAR  |  SQL\$1VARCHAR  |  String  | 

# 使用預備陳述式支援
<a name="jdbc20-prepared-statement-support"></a>

Amazon Redshift JDBC 驅動程式支援預備陳述式。您可以使用預備陳述式來改善需要在相同連線期間執行多次的參數化查詢效能。

預備陳述式**是在伺服器端編譯但不會立即執行的 SQL 陳述式。所編譯的陳述式會以 PreverredStatement 物件的形式儲存在伺服器上，直到您關閉物件或連線為止。當該物件存在時，您可以視需要使用不同的參數值執行預備陳述式多次，而不必重新編譯陳述式。由於額外負荷降低，因此該組查詢的執行速度會變快。

如需預備陳述式的相關資訊，請參閱《Oracle 提供的 JDBC 基本概念教學課程》[https://docs.oracle.com/javase/tutorial/jdbc/basics/prepared.html](https://docs.oracle.com/javase/tutorial/jdbc/basics/prepared.html)中的＜使用預備陳述式＞。

您可以準備包含多個查詢的陳述式。例如，下列預備陳述式包含兩個 INSERT 查詢：

```
PreparedStatement pstmt = conn.prepareStatement("INSERT INTO
MyTable VALUES (1, 'abc'); INSERT INTO CompanyTable VALUES
(1, 'abc');");
```

請注意，這些查詢不會依賴相同預備陳述式中所指定其他查詢的結果。由於準備步驟期間不會執行查詢，因此系統尚未傳回結果，因此沒有結果可供相同預備陳述式中的其他查詢使用。

例如，系統不會允許下列會先建立資料表，然後將值插入該新建資料表的預備陳述式：

```
PreparedStatement pstmt = conn.prepareStatement("CREATE
TABLE MyTable(col1 int, col2 varchar); INSERT INTO myTable
VALUES (1, 'abc');");
```

如果您嘗試準備這個陳述式，伺服器會傳回錯誤，指出目的地資料表 (myTable) 尚不存在。必須先執行 CREATE 查詢，才可以準備 INSERT 查詢。

# JDBC 驅動程式的 2.2 和 1.x 版本之間的差異
<a name="jdbc20-jdbc10-driver-differences"></a>

本節說明 2.2 和 1.x 版 JDBC 驅動程式傳回的資訊差異。JDBC 驅動程式 1.x 版已停止使用。

下表列出每個 JDBC 驅動程式版本的 getDatabaseProductName() 和 getDatabaseProductVersion() 函數所傳回的 DatabaseMetadata 資訊。JDBC 驅動程式 2.2 版會在建立連線時取得值。JDBC 驅動程式 1.x 版會從查詢結果取得值。


| JDBC 驅動程式版本 | getDatabaseProductName() 結果 | getDatabaseProductVersion() 結果 | 
| --- | --- | --- | 
|  2.2  |  Redshift  |  8.0.2  | 
|  1.x  |  PostgreSQL  |  08.00.0002  | 

下表列出每個 JDBC 驅動程式版本的 getTypeInfo 函數所傳回的 DatabaseMetadata 資訊。


| JDBC 驅動程式版本 | getTypeInfo 結果 | 
| --- | --- | 
|  2.2  |  與 Redshift 資料類型一致  | 
|  1.x  |  與 PostgreSQL 資料類型一致  | 

# 建立 JDBC 驅動器 2.x 版的初始化 (.ini) 檔案
<a name="jdbc20-ini-file"></a>

透過使用 Amazon Redshift JDBC 驅動器 2.x 版的初始化 (.ini) 檔案，您可以指定系統層級的組態參數。例如，每個應用程式的聯合 IdP 身分驗證參數可能會有所不同。.ini 檔案會提供通用位置讓 SQL 用戶端取得所需的組態參數。

您可以建立包含 SQL 用戶端組態選項的 JDBC 驅動器 2.x 版初始化 (.ini) 檔案。檔案的預設名稱為 `rsjdbc.ini`。JDBC 驅動器 2.x 版會在下列位置 (依優先順序列出) 檢查 .ini 檔案：
+ 連線 URL 或 SQL 用戶端的連線屬性對話方塊中的 `IniFile` 參數。請確定 `IniFile` 參數包含 .ini 檔案的完整路徑 (包括檔案名稱)。如需 `IniFile` 參數的詳細資訊，請參閱 [IniFile](jdbc20-configuration-options.md#jdbc20-inifile-option)。如果 `IniFile` 參數未正確指定 .ini 檔案的位置，則會顯示錯誤。
+ 具有完整路徑 (包括檔案名稱在內) 的環境變數，例如 AMAZON\$1REDSHIFT\$1JDBC\$1INI\$1FILE。您可以使用 `rsjdbc.ini` 或指定檔案名稱。如果 AMAZON\$1REDSHIFT\$1JDBC\$1INI\$1FILE 環境變數未正確指定 .ini 檔案的位置，則會顯示錯誤。
+ 驅動程式 JAR 檔案所在的目錄。
+ 使用者主目錄。
+ 系統的臨時目錄。

您可以將 .ini 檔案組織為多個驅動，例如 [DRIVER]。每個區段包含指定各種連線參數的鍵值對。您可以使用 `IniSection` 參數來指定 .ini 檔案中的區段。如需 `IniSection` 參數的詳細資訊，請參閱 [IniSection](jdbc20-configuration-options.md#jdbc20-inisection-option)。

以下是 .ini 檔案格式的範例，其中包含 [DRIVER]、[DEV]、[QA] 和 [PROD] 區段。[DRIVER] 區段可套用至任何連線。

```
[DRIVER]
key1=val1
key2=val2

[DEV]
key1=val1
key2=val2

[QA]
key1=val1
key2=val2

[PROD]
key1=val1
key2=val2
```

JDBC 驅動器 2.x 版會從下列位置 (依優先順序列出) 載入組態參數：
+ 應用程式程式碼中的預設組態參數。
+ .ini 檔案中的 [DRIVER] 區段屬性 (如果包含的話)。
+ 自訂區段組態參數 (如果有在連線 URL 或 SQL 用戶端的連線屬性對話方塊中提供 `IniSection` 選項的話)。
+ 來自 `getConnection` 呼叫中所指定連線屬性物件的屬性。
+ 連線 URL 中所指定的組態參數。

# JDBC 驅動器 2.x 版組態的選項
<a name="jdbc20-configuration-options"></a>

您可以在下面找到您可以為 Amazon Redshift JDBC 驅動程式 2.2 版指定的選項的說明。組態選項不區分大小寫。

您可以使用連線 URL 設定組態屬性。如需詳細資訊，請參閱[建置連線 URL](jdbc20-build-connection-url.md)。

**Topics**
+ [AccessKeyID](#jdbc20-accesskeyid-option)
+ [AllowDBUserOverride](#jdbc20-allowdbuseroverride-option)
+ [App\$1ID](#jdbc20-app-id-option)
+ [App\$1Name](#jdbc20-app-name-option)
+ [ApplicationName](#jdbc20-applicationname-option)
+ [AuthProfile](#jdbc20-authprofile-option)
+ [AutoCreate](#jdbc20-autocreate-option)
+ [Client\$1ID](#jdbc20-client_id-option)
+ [Client\$1Secret](#jdbc20-client_secret-option)
+ [ClusterID (ClusterID)](#jdbc20-clusterid-option)
+ [壓縮](#jdbc20-compression-option)
+ [connectTimeout](#jdbc20-connecttimeout-option)
+ [connectionTimezone](#jdbc20-connecttimezone-option)
+ [databaseMetadataCurrentDbOnly](#jdbc20-databasemetadatacurrentdbonly-option)
+ [DbUser](#jdbc20-dbuser-option)
+ [DbGroups](#jdbc20-dbgroups-option)
+ [DBNAME](#jdbc20-dbname-option)
+ [defaultRowFetchSize](#jdbc20-defaultrowfetchsize-option)
+ [DisableIsValidQuery](#jdbc20-disableisvalidquery-option)
+ [enableFetchRingBuffer](#jdbc20-enablefetchringbuffer-option)
+ [enableMultiSqlSupport](#jdbc20-enablemultisqlsupport-option)
+ [fetchRingBufferSize](#jdbc20-fetchringbuffersize-option)
+ [ForceLowercase](#jdbc20-forcelowercase-option)
+ [groupFederation](#jdbc20-groupFederation-option)
+ [HOST](#jdbc20-host-option)
+ [IAMDisableCache](#jdbc20-iamdisablecache-option)
+ [IAMDuration](#jdbc20-iamduration-option)
+ [Idc\$1Client\$1Display\$1Name](#jdbc20-idc_client_display_name)
+ [Idc\$1Region](#jdbc20-idc_region)
+ [IdP\$1Host](#jdbc20-idp_host-option)
+ [IdP\$1Partition](#jdbc20-idp_partition-option)
+ [IdP\$1Port](#jdbc20-idp_port-option)
+ [IdP\$1Tenant](#jdbc20-idp_tenant-option)
+ [IdP\$1Response\$1Timeout](#jdbc20-idp_response_timeout-option)
+ [IniFile](#jdbc20-inifile-option)
+ [IniSection](#jdbc20-inisection-option)
+ [isServerless](#jdbc20-isserverless-option)
+ [Issuer\$1Url](#jdbc20-issuer-url)
+ [Listen\$1Port](#jdbc20-listen-port)
+ [Login\$1URL](#jdbc20-login_url-option)
+ [loginTimeout](#jdbc20-logintimeout-option)
+ [loginToRp](#jdbc20-logintorp-option)
+ [LogLevel](#jdbc20-loglevel-option)
+ [LogPath](#jdbc20-logpath-option)
+ [OverrideSchemaPatternType](#jdbc20-override-schema-pattern-type)
+ [Partner\$1SPID](#jdbc20-partner_spid-option)
+ [密碼](#jdbc20-password-option)
+ [Plugin\$1Name](#jdbc20-plugin_name-option)
+ [PORT](#jdbc20-port-option)
+ [Preferred\$1Role](#jdbc20-preferred_role-option)
+ [設定檔](#jdbc20-profile-option)
+ [PWD](#jdbc20-pwd-option)
+ [queryGroup](#jdbc20-querygroup-option)
+ [readOnly](#jdbc20-readonly-option)
+ [區域](#jdbc20-region-option)
+ [reWriteBatchedInserts](#jdbc20-rewritebatchedinserts-option)
+ [reWriteBatchedInsertsSize](#jdbc20-rewritebatchedinsertssize-option)
+ [roleArn](#jdbc20-rolearn-option)
+ [roleSessionName](#jdbc20-roleaessionname-option)
+ [scope](#jdbc20-scope-option)
+ [SecretAccessKey](#jdbc20-secretaccesskey-option)
+ [SessionToken](#jdbc20-sessiontoken-option)
+ [serverlessAcctId](#jdbc20-serverlessacctid-option)
+ [serverlessWorkGroup](#jdbc20-serverlessworkgroup-option)
+ [socketFactory](#jdbc20-socketfactory-option)
+ [socketTimeout](#jdbc20-sockettimeout-option)
+ [SSL](#jdbc20-ssl-option)
+ [SSL\$1Insecure](#jdbc20-ssl_insecure-option)
+ [SSLCert](#jdbc20-sslcert-option)
+ [SSLFactory](#jdbc20-sslfactory-option)
+ [SSLKey](#jdbc20-sslkey-option)
+ [SSLMode](#jdbc20-sslmode-option)
+ [SSLPassword](#jdbc20-sslpassword-option)
+ [SSLRootCert](#jdbc20-sslrootcert-option)
+ [StsEndpointUrl](#jdbc20-stsendpointurl-option)
+ [tcpKeepAlive](#jdbc20-tcpkeepalive-option)
+ [token](#jdbc20-token-option)
+ [token\$1type](#jdbc20-token-type-option)
+ [UID](#jdbc20-uid-option)
+ [使用者](#jdbc20-user-option)
+ [webIdentityToken](#jdbc20-webidentitytoken-option)

## AccessKeyID
<a name="jdbc20-accesskeyid-option"></a>
+ **預設值** — 無
+ **資料類型** — 字串

您可以指定此參數以輸入使用者或角色的 IAM 存取金鑰。您通常可以透過查看和現有字串或使用者設定檔來找到金鑰。如果您指定此參數，則還必須指定 `SecretAccessKey` 參數。如果在 JDBC URL 中傳遞，則 AccessKeyID 必須經過 URL 編碼。

此為選用參數。

## AllowDBUserOverride
<a name="jdbc20-allowdbuseroverride-option"></a>
+ **預設值** — 0
+ **資料類型** — 字串

此選項會指定驅動程式是使用 SAML 聲明中的 `DbUser` 值，還是使用連線 URL 中 `DbUser` 連線屬性所指定的值。

此為選用參數。

**1**  
驅動程式會使用 SAML 聲明中的 `DbUser` 值。  
如果 SAML 聲明未針對 `DBUser` 指定值，則驅動程式會使用 `DBUser` 連線屬性中指定的值。如果連線屬性也未指定值，則驅動程式會使用連線設定檔中指定的值。

**0**  
驅動程式會使用 `DBUser` 連線屬性中指定的 `DBUser` 值。  
如果 `DBUser` 連線屬性未指定值，則驅動程式會使用連線設定檔中指定的值。如果連線設定檔也未指定值，則驅動程式會使用 SAML 聲明中的值。

## App\$1ID
<a name="jdbc20-app-id-option"></a>
+ **預設值** — 無
+ **資料類型** — 字串

與您的 Amazon Redshift 應用程式相關聯、Okta 所提供的唯一 ID。

如果透過 Okta 服務進行驗證，則需要此參數。

## App\$1Name
<a name="jdbc20-app-name-option"></a>
+ **預設值** — 無
+ **資料類型** — 字串

您用來驗證與 Amazon Redshift 之連線的 Okta 應用程式名稱。

此為選用參數。

## ApplicationName
<a name="jdbc20-applicationname-option"></a>
+ **預設值** — Null
+ **資料類型** — 字串

要傳遞給 Amazon Redshift 以進行稽核的應用程式名稱。

此為選用參數。

## AuthProfile
<a name="jdbc20-authprofile-option"></a>
+ **預設值** — 無
+ **資料類型** — 字串

用於連線至 Amazon Redshift 的身分驗證設定檔名稱。

此為選用參數。

## AutoCreate
<a name="jdbc20-autocreate-option"></a>
+ **預設值** — false
+ **資料類型** — 布林值

此選項會指定當指定的使用者不存在時，驅動程式是否要導致系統建立新的使用者。

此為選用參數。

**true**  
如果 `DBUser` 或唯一 ID (UID) 指定的使用者不存在，則系統會建立具有該名稱的新使用者。

**false**  
驅動程式不會導致系統建立新的使用者。如果指定的使用者不存在，則身分驗證會失敗。

## Client\$1ID
<a name="jdbc20-client_id-option"></a>
+ **預設值** — 無
+ **資料類型** — 字串

使用 Azure AD 服務來驗證連線時要使用的用戶端 ID。

如果透過 Azure AD 服務進行驗證，則需要此參數。

## Client\$1Secret
<a name="jdbc20-client_secret-option"></a>
+ **預設值** — 無
+ **資料類型** — 字串

使用 Azure AD 服務來驗證連線時要使用的用戶端秘密。

如果透過 Azure AD 服務進行驗證，則需要此參數。

## ClusterID (ClusterID)
<a name="jdbc20-clusterid-option"></a>
+ **預設值** — 無
+ **資料類型** — 字串

您要連線至的 Amazon Redshift 叢集的名稱。驅動程式會嘗試從給定的主機偵測此參數。如果您使用 Network Load Balancer (NLB) 並透過 IAM 進行連線，則驅動程式無法偵測此參數，因此您可以使用此連線選項設定此參數。

此為選用參數。

## 壓縮
<a name="jdbc20-compression-option"></a>
+ **預設值** - off
+ **資料類型** — 字串

用於 Amazon Redshift 伺服器與用戶端或驅動程式之間的有線通訊協定通訊的壓縮方法。

此為選用參數。

您可以指定下列值：
+ **lz4**

  將用於與 Amazon Redshift 進行有線通訊協定通訊的壓縮方法設定為 lz4。
+ **off**

  不要對與 Amazon Redshift 進行的有線通訊協定通訊使用壓縮。

## connectTimeout
<a name="jdbc20-connecttimeout-option"></a>
+ **預設值** — 10
+ **資料類型** — 整數

用於通訊端連線操作的逾時值。如果建立 Amazon Redshift 連線所需的時間超過此值，系統就會將此連線視為無法使用。逾時會以秒為單位來指定。值為 0 表示未指定逾時。

此為選用參數。

## connectionTimezone
<a name="jdbc20-connecttimezone-option"></a>
+ **預設值** — LOCAL
+ **資料類型** — 字串

工作階段層級時區。

此為選用參數。

您可以指定下列值：

**LOCAL**  
將工作階段層級時區設定為 LOCAL JVM 時區。

**SERVER**  
將工作階段層級時區設定為在 Amazon Redshift 伺服器上為使用者設定的時區。您可以使用以下命令為使用者設定工作階段層級時區：  

```
ALTER USER
[...]
SET TIMEZONE TO [...];
```

## databaseMetadataCurrentDbOnly
<a name="jdbc20-databasemetadatacurrentdbonly-option"></a>
+ **預設值** — true
+ **資料類型** — 布林值

此選項指定中繼資料 API 會從所有可存取的資料庫擷取資料，還是僅從已連線的資料庫擷取資料。

此為選用參數。

您可以指定下列值：

**true**  
應用程式會從單一資料庫擷取中繼資料。

**false**  
應用程式會從所有可存取的資料庫擷取中繼資料。

## DbUser
<a name="jdbc20-dbuser-option"></a>
+ **預設值** — 無
+ **資料類型** — 字串

要與您的 Amazon Redshift 帳戶搭配使用的使用者 ID。如果您已啟用 AutoCreate 屬性，則可以使用目前不存在的 ID。

此為選用參數。

## DbGroups
<a name="jdbc20-dbgroups-option"></a>
+ **預設值** — PUBLIC
+ **資料類型** — 字串

`DBUser` 針對目前的工作階段所加入之現有資料庫群組名稱的逗號分隔清單。

此為選用參數。

## DBNAME
<a name="jdbc20-dbname-option"></a>
+ **預設值** — Null
+ **資料類型** — 字串

要連線到之資料庫的名稱。您可以使用此選項在 JDBC 連線 URL 中指定資料庫名稱。

此為必要參數。您必須在連線 URL 或用戶端應用程式的連線屬性中指定資料庫名稱。

## defaultRowFetchSize
<a name="jdbc20-defaultrowfetchsize-option"></a>
+ **預設值** — 0
+ **資料類型** — 整數

此選項會指定 getFetchSize 的預設值。

此為選用參數。

您可以指定下列值：

**0**  
在單一操作中擷取所有資料列。

**正整數**  
針對 ResultSet 的每次擷取迭代，要從資料庫擷取的資料列數目。

## DisableIsValidQuery
<a name="jdbc20-disableisvalidquery-option"></a>
+ **預設值** — False
+ **資料類型** — 布林值

此選項會指定驅動程式在使用 Connection.isValid() 方法判斷資料庫連線是否處於作用中狀態時，是否要提交新的資料庫查詢。

此為選用參數。

**true**  
驅動程式在使用 Connection.isValid() 判斷資料庫連線是否處於作用中狀態時，不會提交查詢。如果資料庫伺服器意外關閉，這可能會造成驅動程式錯誤地將資料庫連線識別為作用中狀態。

**false**  
驅動程式在使用 Connection.isValid() 判斷資料庫連線是否處於作用中狀態時，會提交查詢。

## enableFetchRingBuffer
<a name="jdbc20-enablefetchringbuffer-option"></a>
+ **預設值** — true
+ **資料類型** — 布林值

此選項指定驅動程式會在個別執行緒上使用環形緩衝器來擷取資料列。fetchRingBufferSize 參數會指定環形緩衝區的大小。

環形緩衝區會在 JDBC 中實作自動記憶體管理，以防止在資料擷取操作期間out-of-memory(OOM) 錯誤。環形緩衝區會即時監控緩衝資料的實際大小，確保驅動程式的總記憶體用量保持在定義的限制內。達到緩衝容量時，驅動程式會暫停資料擷取操作，防止記憶體溢出，而不需要手動介入。此內建防護功能可自動消除 OOM 錯誤，使用者不需要設定。

如果交易偵測到包含多個以分號分隔的 SQL 命令的陳述式，該交易的擷取環形緩衝區會設為 false。enableFetchRingBuffer 的值不會變更。

此為選用參數。

**注意**  
當環形緩衝區停用且擷取大小未正確設定時，可能會發生out-of-memory(OOM) 問題。如需設定擷取大小的詳細資訊，請參閱[此處](https://docs.aws.amazon.com/redshift/latest/dg/set-the-JDBC-fetch-size-parameter.html)。

## enableMultiSqlSupport
<a name="jdbc20-enablemultisqlsupport-option"></a>
+ **預設值** — true
+ **資料類型** — 布林值

此選項會指定是否要在陳述式中處理以分號分隔的多個 SQL 命令。

此為選用參數。

您可以指定下列值：

**true**  
驅動程式會在陳述式物件中處理以分號分隔的多個 SQL 命令。

**false**  
驅動程式會在單一陳述式中傳回多個 SQL 命令的錯誤。

## fetchRingBufferSize
<a name="jdbc20-fetchringbuffersize-option"></a>
+ **預設值** — 1G
+ **資料類型** — 字串

此選項會指定在擷取結果集時使用的環形緩衝區大小。您可以指定以位元組為單位的大小，例如 1K 表示 1 KB、5000 表示 5,000 個位元組、1M 表示 1 MB、1G 表示 1 GB，依此類推。您也可以指定堆積記憶體的百分比。驅動程式會在達到限制時停止擷取資料列。當應用程式讀取資料列並釋放環形緩衝區中的空間時，擷取操作便會繼續。

此為選用參數。

## ForceLowercase
<a name="jdbc20-forcelowercase-option"></a>
+ **預設值** — false
+ **資料類型** — 布林值

此選項會指定在使用單一登入身分驗證時，驅動程式是否會將從身分提供者傳送至 Amazon Redshift 的所有資料庫群組 (DbGroups) 轉換為小寫。

此為選用參數。

**true**  
驅動程式會將從身分提供者傳送的所有資料庫群組轉換為小寫。

**false**  
驅動程式不會變更資料庫群組。

## groupFederation
<a name="jdbc20-groupFederation-option"></a>
+ **預設值** — false
+ **資料類型** — 布林值

此選項會指定是否使用 Amazon Redshift IDP 群組。這會由 GetClusterCredentialsV2 API 支援。

此為選用參數。

**true**  
使用 Amazon Redshift 身分提供者 (IdP) 群組。

**false**  
針對使用者聯合使用 STS API 和 GetClusterCredentials，並明確指定連線的 DbGroups。

## HOST
<a name="jdbc20-host-option"></a>
+ **預設值** — Null
+ **資料類型** — 字串

要連線到之 Amazon Redshift 伺服器的主機名稱。您可以使用此選項在 JDBC 連線 URL 中指定主機名稱。

此為必要參數。您必須在連線 URL 或用戶端應用程式的連線屬性中指定主機名稱。

## IAMDisableCache
<a name="jdbc20-iamdisablecache-option"></a>
+ **預設值** — false
+ **資料類型** — 布林值

此選項會指定是否快取 IAM 憑證。

此為選用參數。

**true**  
不快取 IAM 憑證。

**false**  
快取 IAM 憑證。例如，當對於 API 閘道的請求遭到限流時，這可以提高效能。

## IAMDuration
<a name="jdbc20-iamduration-option"></a>
+ **預設值** — 900
+ **資料類型** — 整數

臨時 IAM 憑證到期之前的時間長度 (以秒為單位)。
+ **最小值** — 900
+ **最大值** — 3,600

此為選用參數。

## Idc\$1Client\$1Display\$1Name
<a name="jdbc20-idc_client_display_name"></a>
+ **預設值** - Amazon Redshift JDBC 驅動器
+ **資料類型** — 字串

使用 BrowserIdcAuthPlugin 的用戶端要使用的顯示名稱。

此為選用參數。

## Idc\$1Region
<a name="jdbc20-idc_region"></a>
+ **預設值** — 無
+ **資料類型** — 字串

IAM Identity Center 執行個體所在的 AWS 區域。

只有在 plugin\$1name 組態選項中使用 `BrowserIdcAuthPlugin` 進行身分驗證時，才需要此參數。

## IdP\$1Host
<a name="jdbc20-idp_host-option"></a>
+ **預設值** — 無
+ **資料類型** — 字串

您用來對 Amazon Redshift 進行身分驗證的 IdP (身分提供者) 主機。這可以在連線字串或設定檔中指定。

此為選用參數。

## IdP\$1Partition
<a name="jdbc20-idp_partition-option"></a>
+ **預設值** — 無
+ **資料類型** — 字串

指定設定身分提供者 (IdP) 的雲端分割區。這會決定驅動程式連線到哪個 IdP 身分驗證端點。

如果此參數保留空白，驅動程式會預設為商業分割區。可能值為：
+  `us-gov`：如果您的 IdP 是在 Azure Government 中設定，請使用此值。例如，Azure AD Government 會使用端點 `login.microsoftonline.us`。
+  `cn`：如果您的 IdP 是在中國雲端分割區中設定，請使用此值。例如，Azure AD 中國使用端點 `login.chinacloudapi.cn`。

此為選用參數。

## IdP\$1Port
<a name="jdbc20-idp_port-option"></a>
+ **預設值** — 無
+ **資料類型** — 字串

IdP (身分提供者) 使用的連接埠。您可以在連線字串或設定檔中指定連接埠。預設連接埠為 5439。根據您在建立、修改或遷移叢集時所選取的連接埠而定，允許存取選取的連接埠。

此為選用參數。

## IdP\$1Tenant
<a name="jdbc20-idp_tenant-option"></a>
+ **預設值** — 無
+ **資料類型** — 字串

Amazon Redshift 應用程式的 Azure AD 租用戶 ID。

如果透過 Azure AD 服務進行驗證，則需要此參數。

## IdP\$1Response\$1Timeout
<a name="jdbc20-idp_response_timeout-option"></a>
+ **預設值** — 120
+ **資料類型** — 整數

透過瀏覽器外掛程式使用 SAML 或 Azure AD 服務時，驅動程式等待身分提供者傳回 SAML 回應的時間長度 (以秒為單位)。

此為選用參數。

## IniFile
<a name="jdbc20-inifile-option"></a>
+ **預設值** — 無
+ **資料類型** — 字串

.ini 檔案的完整路徑 (包括檔案名稱)。例如：

```
IniFile="C:\tools\rsjdbc.ini"
```

如需 .ini 檔案的相關資訊，請參閱[建立 JDBC 驅動器 2.x 版的初始化 (.ini) 檔案](jdbc20-ini-file.md)。

此為選用參數。

## IniSection
<a name="jdbc20-inisection-option"></a>
+ **預設值** — 無
+ **資料類型** — 字串

.ini 檔案中包含組態選項之區段的名稱。如需 .ini 檔案的相關資訊，請參閱[建立 JDBC 驅動器 2.x 版的初始化 (.ini) 檔案](jdbc20-ini-file.md)。

下列範例會指定 .ini 檔案的 [Prod] 區段：

```
IniSection="Prod"
```

此為選用參數。

## isServerless
<a name="jdbc20-isserverless-option"></a>
+ **預設值** — false
+ **資料類型** — 布林值

此選項會指定 Amazon Redshift 端點主機是否為無伺服器執行個體。驅動程式會嘗試從給定的主機偵測此參數。如果您使用 Network Load Balancer (NLB)，則驅動程式無法偵測此參數，因此您可以在此設定此參數。

此為選用參數。

**true**  
Amazon Redshift 端點主機是無伺服器執行個體。

**false**  
Amazon Redshift 端點主機是已佈建的叢集。

## Issuer\$1Url
<a name="jdbc20-issuer-url"></a>
+ **預設值** — 無
+ **資料類型** — 字串

指向 AWS IAM Identity Center 伺服器的執行個體端點。

只有在 plugin\$1name 組態選項中使用 `BrowserIdcAuthPlugin` 進行身分驗證時，才需要此參數。

## Listen\$1Port
<a name="jdbc20-listen-port"></a>
+ **預設值** — 7890
+ **資料類型** — 整數

透過瀏覽器外掛程式使用 SAML、Azure AD 或 AWS Identity Center 服務時，驅動程式用來從身分提供者或授權碼接收 SAML 回應的連接埠。

此為選用參數。

## Login\$1URL
<a name="jdbc20-login_url-option"></a>
+ **預設值** — 無
+ **資料類型** — 字串

透過瀏覽器外掛程式使用 SAML 或 Azure AD 服務時，身分提供者網站上資源的 URL。

如果透過瀏覽器外掛程式向 SAML 或 Azure AD 服務進行驗證，則需要此參數。

## loginTimeout
<a name="jdbc20-logintimeout-option"></a>
+ **預設值** — 0
+ **資料類型** — 整數

連線至伺服器並進行驗證時，逾時之前等待的秒數。如果建立連線所花的時間超過此臨界值，連線會中止。

當此屬性設為 0 時，連線不會逾時。

此為選用參數。

## loginToRp
<a name="jdbc20-logintorp-option"></a>
+ **預設值** — `urn:amazon:webservices`
+ **資料類型** — 字串

您要用於 AD FS 身分驗證類型的依賴方信任。

此為選用參數。

## LogLevel
<a name="jdbc20-loglevel-option"></a>
+ **預設值** — 0
+ **資料類型** — 整數

使用此屬性可在驅動程式中開啟或關閉日誌記錄，以及指定日誌檔案中包含的詳細資訊數量。

日誌記錄功能應該要啟用到足以找到問題的時間長度就好。日誌記錄功能會降低效能，而且還會消耗大量磁碟空間。

此為選用參數。

將此參數設為以下其中一個值：

**0**  
停用所有日誌記錄功能。

**1**  
在 FATAL 層級上啟用日誌記錄功能，這會記錄會導致驅動程式中止的極嚴重錯誤事件。

**2**  
在 ERROR 層級上啟用日誌記錄功能，這會記錄可能仍允許驅動程式繼續執行的錯誤事件。

**3**  
在 WARNING 層級上啟用日誌記錄功能，這會記錄如果未採取動作可能會導致錯誤的事件。

**4**  
在 INFO 層級上啟用日誌記錄功能，這會記錄描述驅動程式進度的一般資訊。

**5**  
在 DEBUG 層級上啟用日誌記錄功能，這會記錄有助於偵錯驅動程式的詳細資訊。

**6**  
在 TRACE 層級上啟用日誌記錄功能，這會記錄所有驅動程式活動。

在啟用日誌記錄功能時，驅動程式會在 `LogPath` 屬性所指定的位置產生下列日誌檔案：
+ **`redshift_jdbc.log`** - 記錄非連線特定驅動器活動的檔案。
+ **`redshift_jdbc_connection_[Number].log`** — 向資料庫建立的每個連線的檔案，其中 `[Number]` 是用來區別每個日誌檔案的編號。此檔案會記錄連線特定的驅動程式活動。

如果 LogPath 值無效，則驅動程式會將日誌記錄資訊傳送至標準輸出串流 `System.out`。

## LogPath
<a name="jdbc20-logpath-option"></a>
+ **預設值** — 目前的工作目錄。
+ **資料類型** — 字串

啟用 DSILogLevel 屬性時，驅動程式用來儲存日誌檔案之資料夾的完整路徑。

為了確定連線 URL 會與所有 JDBC 應用程式相容，建議您輸入另一個反斜線來逸出檔案路徑中的反斜線 (\$1)。

此為選用參數。

## OverrideSchemaPatternType
<a name="jdbc20-override-schema-pattern-type"></a>
+ **預設值** — Null
+ **資料類型** — 整數

此選項會指定是否要覆寫 getTables 呼叫中使用的查詢類型。

**0**  
無結構描述通用查詢

**1**  
本機結構描述查詢

**2**  
外部結構描述查詢

此為選用參數。

## Partner\$1SPID
<a name="jdbc20-partner_spid-option"></a>
+ **預設值** — 無
+ **資料類型** — 字串

使用 PingFederate 服務驗證連線時，要使用的合作夥伴 SPID (服務提供者 ID) 值。

此為選用參數。

## 密碼
<a name="jdbc20-password-option"></a>
+ **預設值** — 無
+ **資料類型** — 字串

透過 IDP 使用 IAM 身分驗證進行連線時，這是 IDP\$1Host 伺服器的密碼。使用標準身分驗證時，這可以用於 Amazon Redshift 資料庫密碼，而不是 PWD。

此為選用參數。

## Plugin\$1Name
<a name="jdbc20-plugin_name-option"></a>
+ **預設值** — 無
+ **資料類型** — 字串

用來實作特定憑證提供者外掛程式的完整類別名稱。

此為選用參數。

支援的提供者選項如下：
+ **`AdfsCredentialsProvider`** - Active Directory Federation Service。
+ **`AzureCredentialsProvider`** - Microsoft Azure Active Directory (AD) 服務。
+ **`BasicJwtCredentialsProvider`** - JSON Web Tokens (JWT) 服務。
+ **`BasicSamlCredentialsProvider`** — 可與許多 SAML 服務提供者搭配使用的安全性聲明標記語言 (SAML) 憑證。
+ **`BrowserAzureCredentialsProvider`** - 瀏覽器 Microsoft Azure Active Directory (AD) 服務。
+ **`BrowserAzureOAuth2CredentialsProvider`** - 適用於原生身分驗證的瀏覽器 Microsoft Azure Active Directory (AD) 服務。
+ **`BrowserIdcAuthPlugin` ** – 使用 IAM Identity Center AWS 的授權外掛程式。
+ **`BrowserSamlCredentialsProvider`** - 適用於 SAML 服務的瀏覽器 SAML，例如 Okta、Ping 或 ADFS。
+ **`IdpTokenAuthPlugin`** – 從連結至 IAM Identity Center AWS 的任何 Web 身分提供者接受 IAM Identity Center 字符或 OpenID Connect (OIDC) JSON 型身分字符 (JWT) AWS 的授權外掛程式。
+ **`OktaCredentialsProvider`** - Okta 服務。
+ **`PingCredentialsProvider`** - PingFederate 服務。

## PORT
<a name="jdbc20-port-option"></a>
+ **預設值** — Null
+ **資料類型** — 整數

要連線到之 Amazon Redshift 伺服器的連接埠。您可以使用此選項在 JDBC 連線 URL 中指定連接埠。

此為選用參數。

## Preferred\$1Role
<a name="jdbc20-preferred_role-option"></a>
+ **預設值** — 無
+ **資料類型** — 字串

您要在連線到 Amazon Redshift 期間擔任的 IAM 角色。

此為選用參數。

## 設定檔
<a name="jdbc20-profile-option"></a>
+ **預設值** — 無
+ **資料類型** — 字串

要用於 IAM 身分驗證之設定檔的名稱。此設定檔包含未在連線字串中指定的任何其他連線屬性。

此為選用參數。

## PWD
<a name="jdbc20-pwd-option"></a>
+ **預設值** — 無
+ **資料類型** — 字串

與您使用屬性 UID 提供的 Amazon Redshift 使用者名稱對應的密碼。

此為選用參數。

## queryGroup
<a name="jdbc20-querygroup-option"></a>
+ **預設值** — Null
+ **資料類型** — 字串

此選項會在執行期將查詢指派給適當的查詢群組，以便將查詢指派給佇列。系統會針對工作階段設定查詢群組。在連線上執行的所有查詢都屬於此查詢群組。

此為選用參數。

## readOnly
<a name="jdbc20-readonly-option"></a>
+ **預設值** — false
+ **資料類型** — 布林值

此屬性會指定驅動程式是否處於唯讀模式。

此為選用參數。

**true**  
連線處於唯讀模式，且無法寫入到資料存放區。

**false**  
連線不處於唯讀模式，可以寫入到資料存放區。

## 區域
<a name="jdbc20-region-option"></a>
+ **預設值** — Null
+ **資料類型** — 字串

此選項指定叢集所在的 AWS 區域。如果您指定 StsEndPoint 選項，系統會忽略區域選項。Redshift `GetClusterCredentials` API 操作也會使用區域選項。

此為選用參數。

## reWriteBatchedInserts
<a name="jdbc20-rewritebatchedinserts-option"></a>
+ **預設值** — false
+ **資料類型** — 布林值

此選項可實現最佳化，以重寫相容的 INSERT 陳述式並將這些陳述式合併為批次。

此為選用參數。

## reWriteBatchedInsertsSize
<a name="jdbc20-rewritebatchedinsertssize-option"></a>
+ **預設值** — 128
+ **資料類型** — 整數

此選項可實現最佳化，以重寫相容的 INSERT 陳述式並將這些陳述式合併為批次。此值必須以 2 的冪呈指數增加。

此為選用參數。

## roleArn
<a name="jdbc20-rolearn-option"></a>
+ **預設值** — 無
+ **資料類型** — 字串

角色的 Amazon Resource Name (ARN)。當您指定 Plugin\$1Name 選項的 BasicJwtCredentialsProvider 時，請務必指定此參數。請以下列格式指定 ARN：

`arn:partition:service:region:account-id:resource-id`

如果您指定 Plugin\$1Name 選項的 BasicJwtCredentialsProvider，則必須有此參數。

## roleSessionName
<a name="jdbc20-roleaessionname-option"></a>
+ **預設值** — jwt\$1redshift\$1session
+ **資料類型** — 字串

擔任角色工作階段的識別碼。一般來說，您會傳遞與應用程式使用者相關聯的名稱或識別碼。應用程式使用的臨時安全憑證會與該使用者相關聯。當您指定 Plugin\$1Name 選項的 BasicJwtCredentialsProvider 時，您可以指定此參數。

此為選用參數。

## scope
<a name="jdbc20-scope-option"></a>
+ **預設值** — 無
+ **資料類型** — 字串

使用者可以同意的範圍清單 (以空格分隔)。指定這個參數可讓您的 Microsoft Azure 應用程式針對您想要呼叫的 API 取得同意。當您為 Plugin\$1Name 選項指定 BrowserAzureOAuth2CredentialsProvider 時，便可以指定此參數。

BrowserAzureOAuth2CredentialsProvider 外掛程式需要此參數。

## SecretAccessKey
<a name="jdbc20-secretaccesskey-option"></a>
+ **預設值** — 無
+ **資料類型** — 字串

使用者或角色的 IAM 存取金鑰。如果指定了此參數，則也必須指定 AccessKeyID。如果在 JDBC URL 中傳遞，則 SecretAccessKey 必須經過 URL 編碼。

此為選用參數。

## SessionToken
<a name="jdbc20-sessiontoken-option"></a>
+ **預設值** — 無
+ **資料類型** — 字串

與您用來驗證的 IAM 角色相關聯的臨時 IAM 工作階段權杖。如果在 JDBC URL 中傳遞，則臨時 IAM 工作階段權杖必須經過 URL 編碼。

此為選用參數。

## serverlessAcctId
<a name="jdbc20-serverlessacctid-option"></a>
+ **預設值** — Null
+ **資料類型** — 字串

Amazon Redshift Serverless 帳戶 ID。驅動程式會嘗試從給定的主機偵測此參數。如果您使用 Network Load Balancer (NLB)，則驅動程式無法偵測此參數，因此您可以在此設定此參數。

此為選用參數。

## serverlessWorkGroup
<a name="jdbc20-serverlessworkgroup-option"></a>
+ **預設值** — Null
+ **資料類型** — 字串

Amazon Redshift Serverless 工作群組名稱。驅動程式會嘗試從給定的主機偵測此參數。如果您使用 Network Load Balancer (NLB)，則驅動程式無法偵測此參數，因此您可以在此設定此參數。

此為選用參數。

## socketFactory
<a name="jdbc20-socketfactory-option"></a>
+ **預設值** — Null
+ **資料類型** — 字串

此選項會指定用於建立通訊端的通訊端 Factory。

此為選用參數。

## socketTimeout
<a name="jdbc20-sockettimeout-option"></a>
+ **預設值** — 0
+ **資料類型** — 整數

在通訊端讀取操作期間，逾時之前等待的秒數。如果操作所花的時間超過此臨界值，連線會關閉。當此屬性設為 0 時，連線不會逾時。

此為選用參數。

## SSL
<a name="jdbc20-ssl-option"></a>
+ **預設值** — TRUE
+ **資料類型** — 字串

使用此屬性可開啟或關閉連線的 SSL。

此為選用參數。

您可以指定下列值：

**TRUE**  
驅動程式會透過 SSL 連線到伺服器。

**FALSE**  
驅動程式會以不使用 SSL 的方式連線到伺服器。IAM 身分驗證不支援此選項。

或者，您也可以設定 AuthMech 屬性。

## SSL\$1Insecure
<a name="jdbc20-ssl_insecure-option"></a>
+ **預設值** — true
+ **資料類型** — 字串

此屬性會指出是否應驗證 IDP 主機伺服器憑證。

此為選用參數。

您可以指定下列值：

**true**  
驅動程式不會檢查 IDP 伺服器憑證的真實性。

**false**  
驅動程式會檢查 IDP 伺服器憑證的真實性。

## SSLCert
<a name="jdbc20-sslcert-option"></a>
+ **預設值** — 無
+ **資料類型** — 字串

包含可在使用 SSL 時驗證 Amazon Redshift 伺服器執行個體之其他受信任 CA 憑證的 .pem 或 .crt 檔案的完整路徑。

如果指定 SSLKey，則需要此參數。

## SSLFactory
<a name="jdbc20-sslfactory-option"></a>
+ **預設值** — 無
+ **資料類型** — 字串

在不使用伺服器憑證的情況下，透過 TLS/SSL 連線至伺服器時要使用的 SSL Factory。

## SSLKey
<a name="jdbc20-sslkey-option"></a>
+ **預設值** — 無
+ **資料類型** — 字串

包含用於驗證 SSLCert 中所指定憑證的 PKCS8 金鑰檔案的 .der 檔案完整路徑。

如果指定 SSLCert，則需要此參數。

## SSLMode
<a name="jdbc20-sslmode-option"></a>
+ **預設值** — verify-ca
+ **資料類型** — 字串

使用此屬性可指定在已啟用 TLS/SSL 時，驅動程式會如何驗證憑證。

此為選用參數。

您可以指定下列值：

**verify-ca**  
驅動程式會驗證憑證是否來自受信任的憑證授權機構 (CA)。

**verify-full**  
驅動程式會驗證憑證是否來自受信任的 CA，以及憑證中的主機名稱是否符合連線 URL 中指定的主機名稱。

## SSLPassword
<a name="jdbc20-sslpassword-option"></a>
+ **預設值** — 0
+ **資料類型** — 字串

SSLKey 中所指定已加密金鑰檔案的密碼。

如果指定了 SSLKey 且金鑰檔案已加密，則需要此參數。

## SSLRootCert
<a name="jdbc20-sslrootcert-option"></a>
+ **預設值** — 無
+ **資料類型** — 字串

包含可在使用 SSL 時驗證 Amazon Redshift 伺服器執行個體之根 CA 憑證的 .pem 或 .crt 檔案的完整路徑。

## StsEndpointUrl
<a name="jdbc20-stsendpointurl-option"></a>
+ **預設值** — Null
+ **資料類型** — 字串

您可以指定 AWS Security Token Service (AWS STS) 端點。如果您指定此選項，系統會忽略區域選項。您只能為此端點指定安全的通訊協定 (HTTPS)。

## tcpKeepAlive
<a name="jdbc20-tcpkeepalive-option"></a>
+ **預設值** — TRUE
+ **資料類型** — 字串

使用此屬性可開啟或關閉 TCP 保持連線。

此為選用參數。

您可以指定下列值：

**TRUE**  
驅動程式會使用 TCP 保持連線來防止連線逾時。

**FALSE**  
驅動程式不會使用 TCP 保持連線。

## token
<a name="jdbc20-token-option"></a>
+ **預設值** — 無
+ **資料類型** — 字串

IAM Identity Center AWS 提供存取字符或由與 IAM Identity Center 連結的 Web 身分提供者提供的 OpenID Connect (OIDC) JSON Web Token AWS (JWT)。您的應用程式必須透過使用 IAM Identity Center AWS 或與 IAM Identity Center 連結的身分提供者來驗證應用程式的使用者來產生此字符 AWS 。

此參數適用於 `IdpTokenAuthPlugin`。

## token\$1type
<a name="jdbc20-token-type-option"></a>
+ **預設值** — 無
+ **資料類型** — 字串

`IdpTokenAuthPlugin` 中使用的權仗類型。

您可以指定下列值：

**ACCESS\$1TOKEN**  
如果您使用 AWS IAM Identity Center 提供的存取權杖，請輸入此選項。

**EXT\$1JWT**  
如果您使用與 AWS IAM Identity Center 整合的 Web 型身分提供者所提供的 OpenID Connect (OIDC) JSON Web Token (JWT)，請輸入此項。

此參數適用於 `IdpTokenAuthPlugin`。

## UID
<a name="jdbc20-uid-option"></a>
+ **預設值** — 無
+ **資料類型** — 字串

您用來存取資料庫的資料庫使用者名稱。

此為必要參數。

## 使用者
<a name="jdbc20-user-option"></a>
+ **預設值** — 無
+ **資料類型** — 字串

透過 IDP 使用 IAM 身分驗證進行連線時，這是 idp\$1host 伺服器的使用者名稱。使用標準身分驗證時，這可以用於 Amazon Redshift 資料庫使用者名稱。

此為選用參數。

## webIdentityToken
<a name="jdbc20-webidentitytoken-option"></a>
+ **預設值** — 無
+ **資料類型** — 字串

由身分提供者提供的 OAuth 2.1 存取權杖或 OpenID Connect ID 權杖。您的應用程式必須透過使用 Web 身分提供者對應用程式的使用者進行身分驗證來獲取此權杖。當您指定 Plugin\$1Name 選項的 BasicJwtCredentialsProvider 時，請務必指定此參數。

如果您指定 Plugin\$1Name 選項的 BasicJwtCredentialsProvider，則必須有此參數。

# JDBC 驅動器 2.x 版之前的版本
<a name="jdbc20-previous-driver-version-20"></a>

請在您的工具需要特定版本的驅動器時，才下載 Amazon Redshift JDBC 驅動器 2.x 版之前的版本。

下列是之前的 JDBC 4.2 相容 JDBC 驅動器 2.x 版驅動器：
+ [https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.2.4/redshift-jdbc42-2.2.4.zip](https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.2.4/redshift-jdbc42-2.2.4.zip) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.2.3/redshift-jdbc42-2.2.3.zip](https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.2.3/redshift-jdbc42-2.2.3.zip) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.2.2/redshift-jdbc42-2.2.2.zip](https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.2.2/redshift-jdbc42-2.2.2.zip) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.2.1/redshift-jdbc42-2.2.1.zip](https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.2.1/redshift-jdbc42-2.2.1.zip) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.2.0/redshift-jdbc42-2.2.0.zip](https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.2.0/redshift-jdbc42-2.2.0.zip) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.1.0.34/redshift-jdbc42-2.1.0.34.zip](https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.1.0.34/redshift-jdbc42-2.1.0.34.zip) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.1.0.33/redshift-jdbc42-2.1.0.33.zip](https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.1.0.33/redshift-jdbc42-2.1.0.33.zip) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.1.0.32/redshift-jdbc42-2.1.0.32.zip](https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.1.0.32/redshift-jdbc42-2.1.0.32.zip) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.1.0.30/redshift-jdbc42-2.1.0.30.zip](https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.1.0.30/redshift-jdbc42-2.1.0.30.zip) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.1.0.29/redshift-jdbc42-2.1.0.29.zip](https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.1.0.29/redshift-jdbc42-2.1.0.29.zip) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.1.0.28/redshift-jdbc42-2.1.0.28.zip](https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.1.0.28/redshift-jdbc42-2.1.0.28.zip) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.1.0.26/redshift-jdbc42-2.1.0.26.zip](https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.1.0.26/redshift-jdbc42-2.1.0.26.zip) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.1.0.25/redshift-jdbc42-2.1.0.25.zip](https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.1.0.25/redshift-jdbc42-2.1.0.25.zip) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.1.0.24/redshift-jdbc42-2.1.0.24.zip](https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.1.0.24/redshift-jdbc42-2.1.0.24.zip) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.1.0.23/redshift-jdbc42-2.1.0.23.zip](https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.1.0.23/redshift-jdbc42-2.1.0.23.zip) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.1.0.22/redshift-jdbc42-2.1.0.22.zip](https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.1.0.22/redshift-jdbc42-2.1.0.22.zip) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.1.0.21/redshift-jdbc42-2.1.0.21.zip](https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.1.0.21/redshift-jdbc42-2.1.0.21.zip) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.1.0.20/redshift-jdbc42-2.1.0.20.zip](https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.1.0.20/redshift-jdbc42-2.1.0.20.zip) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.1.0.19/redshift-jdbc42-2.1.0.19.zip](https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.1.0.19/redshift-jdbc42-2.1.0.19.zip) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.1.0.18/redshift-jdbc42-2.1.0.18.zip](https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.1.0.18/redshift-jdbc42-2.1.0.18.zip) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.1.0.17/redshift-jdbc42-2.1.0.17.zip](https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.1.0.17/redshift-jdbc42-2.1.0.17.zip) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.1.0.16/redshift-jdbc42-2.1.0.16.zip](https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.1.0.16/redshift-jdbc42-2.1.0.16.zip) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.1.0.15/redshift-jdbc42-2.1.0.15.zip](https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.1.0.15/redshift-jdbc42-2.1.0.15.zip) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.1.0.14/redshift-jdbc42-2.1.0.14.zip](https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.1.0.14/redshift-jdbc42-2.1.0.14.zip) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.1.0.13/redshift-jdbc42-2.1.0.13.zip](https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.1.0.13/redshift-jdbc42-2.1.0.13.zip) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.1.0.12/redshift-jdbc42-2.1.0.12.zip](https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.1.0.12/redshift-jdbc42-2.1.0.12.zip) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.1.0.11/redshift-jdbc42-2.1.0.11.zip](https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.1.0.11/redshift-jdbc42-2.1.0.11.zip) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.1.0.10/redshift-jdbc42-2.1.0.10.zip](https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.1.0.10/redshift-jdbc42-2.1.0.10.zip) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.1.0.9/redshift-jdbc42-2.1.0.9.zip](https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.1.0.9/redshift-jdbc42-2.1.0.9.zip) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.1.0.8/redshift-jdbc42-2.1.0.8.zip](https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.1.0.8/redshift-jdbc42-2.1.0.8.zip) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.1.0.7/redshift-jdbc42-2.1.0.7.zip](https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.1.0.7/redshift-jdbc42-2.1.0.7.zip) 

# Amazon Redshift Python 連接器
<a name="python-redshift-driver"></a>

透過使用適用於 Python 的 Amazon Redshift 連接器，您可以將工作與[適用於 Python (Boto3) 的 AWS SDK](https://github.com/boto/boto3)，以及 pandas 和數值 Python (NumPy) 整合。如需 pandas 的相關資訊，請參閱 [pandas GitHub 儲存庫](https://github.com/pandas-dev/pandas)。如需 NumPy 的相關資訊，請參閱 [NumPy GitHub 儲存庫](https://github.com/numpy/numpy)。

Amazon Redshift Python 連接器提供了開放原始碼的解決方案。您可以瀏覽原始碼、請求增強功能、回報問題並提供貢獻。

若要使用 Amazon Redshift Python 連線器，請確定您的 Python 是 3.6 版或更新版本。如需詳細資訊，請參閱 [Amazon Redshift Python 驅動程式授權合約](https://github.com/aws/amazon-redshift-python-driver/blob/master/LICENSE)。

Amazon Redshift Python 連接器可提供以下功能：
+ AWS Identity and Access Management (IAM) 身分驗證。如需詳細資訊，請參閱[Amazon Redshift 中的身分和存取管理](redshift-iam-authentication-access-control.md)。
+ 使用聯合 API 存取的身分提供者身分驗證。以下企業身分提供者可支援聯合 API 存取：
  + Azure AD。如需詳細資訊，請參閱 AWS 大數據部落格文章[使用 Microsoft Azure AD 單一登入聯合 Amazon Redshift 存取](https://aws.amazon.com/blogs/big-data/federate-amazon-redshift-access-with-microsoft-azure-ad-single-sign-on/)。
  + Active Directory Federation Services。如需詳細資訊，請參閱 AWS 大數據部落格文章[將 Amazon Redshift 叢集的存取與 Active Directory Federation Services (AD FS) 聯合：第 1 部分](https://aws.amazon.com/blogs/big-data/federate-access-to-your-amazon-redshift-cluster-with-active-directory-federation-services-ad-fs-part-1/)。
  + Okta。如需詳細資訊，請參閱 AWS 大數據部落格文章[以身分提供者 Okta 聯合 Amazon Redshift 存取](https://aws.amazon.com/blogs/big-data/federate-amazon-redshift-access-with-okta-as-an-identity-provider/)。
  + PingFederate。如需詳細資訊，請參閱 [PingFederate 網站](https://www.pingidentity.com/en/software/pingfederate.html)。
  + JumpCloud。如需詳細資訊，請參閱 [JumpCloud 網站](https://jumpcloud.com/)。
+ Amazon Redshift 資料類型。

Amazon Redshift Python 連接器會實作 Python Database API Specification 2.0。如需詳細資訊，請參閱 Python 網站上的 [PEP 249—Python Database API Specification v2.0](https://www.python.org/dev/peps/pep-0249/)。

**Topics**
+ [安裝 Amazon Redshift Python 連接器](python-driver-install.md)
+ [Amazon Redshift Python 連接器的組態選項](python-configuration-options.md)
+ [匯入 Python 連接器](python-start-import.md)
+ [將 Python 連接器與 NumPy 進行整合](python-connect-integrate-numpy.md)
+ [將 Python 連接器與 pandas 進行整合](python-connect-integrate-pandas.md)
+ [使用身分提供者外掛程式](python-connect-identity-provider-plugins.md)
+ [使用 Amazon Redshift Python 連接器的範例](python-connect-examples.md)
+ [Amazon Redshift Python 連接器的 API 參考](python-api-reference.md)

# 安裝 Amazon Redshift Python 連接器
<a name="python-driver-install"></a>

您可以使用下列任一方法來安裝 Amazon Redshift Python 連線器：
+ Python Package Index (PyPI)
+ Conda
+ 複製 GitHub 儲存庫

## 從 PyPI 安裝 Python 連接器
<a name="python-pip-install-pypi"></a>

若要從 Python Package Index (PyPI) 安裝 Python 連線器，您可以使用 pip。若要進行這項動作，請執行以下命令。

```
>>> pip install redshift_connector
```

您可以在虛擬環境內安裝連接器。若要進行這項動作，請執行以下命令。

```
>>> pip install redshift_connector
```

或者，您也可以選擇安裝 pandas 和 NumPy 與連接器。

```
>>> pip install 'redshift_connector[full]'
```

如需 pip 的相關資訊，請參閱 [pip 網站](https://pip.pypa.io/en/stable/)。

## 從 Conda 安裝 Python 連接器
<a name="python-pip-install-from-conda"></a>

您可以從 Anaconda.org 安裝 Python 連接器。

```
>>>conda install -c conda-forge redshift_connector
```

## 從 複製 GitHub 儲存庫來安裝 Python 連接器 AWS
<a name="python-pip-install-from-source"></a>

若要從來源安裝 Python 連接器，請從 AWS複製 GitHub 儲存庫。在安裝 Python 和 virtualenv 後，請透過執行以下命令來設定環境並安裝所需的相依性。

```
$ git clone https://github.com/aws/amazon-redshift-python-driver.git
$ cd amazon-redshift-python-driver
$ virtualenv venv
$ . venv/bin/activate
$ python -m pip install -r requirements.txt
$ python -m pip install -e .
$ python -m pip install redshift_connector
```

# Amazon Redshift Python 連接器的組態選項
<a name="python-configuration-options"></a>

接下來，您可以找到可為 Amazon Redshift Python 連接器指定之選項的描述。除非另有指明，否則以下選項適用於最新推出的連接器版本。

## access\$1key\$1id
<a name="python-access-key-id-option"></a>
+ **預設值** — 無
+ **資料類型** — 字串

針對 IAM 資料庫身分驗證而設定之 IAM 角色或使用者的存取金鑰。

此為選用參數。

## allow\$1db\$1user\$1override
<a name="python-allow-db-user-override-option"></a>
+ **預設值** — False
+ **資料類型** — 布林值

True  
指定連接器會使用安全性聲明標記語言 (SAML) 聲明中的 `DbUser` 值。

False  
指定使用 `DbUser` 連線參數中的值。

此為選用參數。

## app\$1name
<a name="python-app-name-option"></a>
+ **預設值** — 無
+ **資料類型** — 字串

用於身分驗證之身分提供者 (IdP) 應用程式的名稱。

此為選用參數。

## application\$1name
<a name="python-application_name-option"></a>
+ **預設值** — 無
+ **資料類型** — 字串

要傳遞至 Amazon Redshift 以進行稽核的用戶端應用程式名稱。您提供的應用程式名稱會出現在 [SYS\$1CONNECTION\$1LOG](https://docs.aws.amazon.com/redshift/latest/dg/SYS_CONNECTION_LOG.html) 資料表的 'application\$1name' 欄中。此名稱有助於在偵錯問題時，追蹤連線來源並進行故障診斷。

此為選用參數。

## auth\$1profile
<a name="python-auth-profile-option"></a>
+ **預設值** — 無
+ **資料類型** — 字串

具有 JSON 形式連線屬性之 Amazon Redshift 身分驗證設定檔的名稱。如需有關命名連線參數的詳細資訊，請參閱 `RedshiftProperty` 類別。`RedshiftProperty` 類別會儲存最終使用者提供的連線參數，以及 (適用的話) 在 IAM 身分驗證程序 (例如臨時 IAM 憑證) 進行期間產生的連線參數。如需詳細資訊，請參閱 [RedshiftProperty 類別](https://github.com/aws/amazon-redshift-python-driver/blob/master/redshift_connector/redshift_property.py#L9)。

此為選用參數。

## auto\$1create
<a name="python-auto-create-option"></a>
+ **預設值** — False
+ **資料類型** — 布林值

此值會指出是否要在使用者不存在時建立使用者。

此為選用參數。

## client\$1id
<a name="python-client-id-option"></a>
+ **預設值** — 無
+ **資料類型** — 字串

來自 Azure IdP 的用戶端 ID。

此為選用參數。

## client\$1secret
<a name="python-client-secret-option"></a>
+ **預設值** — 無
+ **資料類型** — 字串

來自 Azure IdP 的用戶端祕密。

此為選用參數。

## cluster\$1identifier
<a name="python-cluster-identifier-option"></a>
+ **預設值** — 無
+ **資料類型** — 字串

Amazon Redshift 叢集的叢集識別碼。

此為選用參數。

## credentials\$1provider
<a name="python-credential-provider-option"></a>
+ **預設值** — 無
+ **資料類型** — 字串

用於以 Amazon Redshift 進行驗證的 IdP。有效值如下：
+ `AdfsCredentialsProvider`
+ `AzureCredentialsProvider`
+ `BrowserAzureCredentialsProvider`
+ `BrowserAzureOAuth2CredentialsProvider`
+ `BrowserIdcAuthPlugin` - 使用 AWS IAM Identity Center 的授權外掛程式。
+ `BrowserSamlCredentialsProvider`
+ `IdpTokenAuthPlugin` – 從任何 AWS 連結至 IAM Identity Center AWS 的 Web 身分提供者接受 IAM Identity Center 字符或 OpenID Connect (OIDC) JSON 型身分字符 (JWT) 的授權外掛程式。
+ `PingCredentialsProvider`
+ `OktaCredentialsProvider`

此為選用參數。

## 資料庫
<a name="python-database-option"></a>
+ **預設值** — 無
+ **資料類型** — 字串

要連線到之資料庫的名稱。

此為必要參數。

## database\$1metadata\$1current\$1db\$1only
<a name="python-database-metadata-current-db-only-option"></a>
+ **預設值** — True
+ **資料類型** — 布林值

此值會指出應用程式是否支援多資料庫資料共用型錄。預設值 True 會指出應用程式不會為了回溯相容性而支援多資料庫資料共用型錄。

此為選用參數。

## db\$1groups
<a name="python-db-groups-option"></a>
+ **預設值** — 無
+ **資料類型** — 字串

DbUser 所指出的使用者針對目前的工作階段所加入之現有資料庫群組名稱的逗號分隔清單。

此為選用參數。

## db\$1user
<a name="python-db-user-option"></a>
+ **預設值** — 無
+ **資料類型** — 字串

要與 Amazon Redshift 搭配使用的使用者 ID。

此為選用參數。

## endpoint\$1url
<a name="python-endpoint-url-option"></a>
+ **預設值** — 無
+ **資料類型** — 字串

Amazon Redshift 端點的 URL。此選項僅供 AWS 內部使用。

此為選用參數。

## group\$1federation
<a name="python-group-federation-option"></a>
+ **預設值** — False
+ **資料類型** — 布林值

此選項會指定是否使用 Amazon Redshift IDP 群組。

此為選用參數。

**true**  
使用 Amazon Redshift 身分提供者 (IdP) 群組。

**false**  
針對使用者聯合使用 STS API 和 GetClusterCredentials，並指定連線的 **db\$1groups**。

## 託管
<a name="python-host-option"></a>
+ **預設值** — 無
+ **資料類型** — 字串

Amazon Redshift 叢集的主機名稱。

此為選用參數。

## iam
<a name="python-iam-option"></a>
+ **預設值** — False
+ **資料類型** — 布林值

會啟用 IAM 身分驗證。

此為必要參數。

## iam\$1disable\$1cache
<a name="python-iam-disable-cache-option"></a>
+ **預設值** — False
+ **資料類型** — 布林值

此選項會指定是否快取 IAM 憑證。預設會快取 IAM 憑證。當對於 API 閘道的請求遭到限流時，這可以提高效能。

此為選用參數。

## idc\$1client\$1display\$1name
<a name="python-idc_client_display_name-option"></a>
+ **預設值** - Amazon Redshift Python 連接器
+ **資料類型** — 字串

使用 BrowserIdcAuthPlugin 的用戶端要使用的顯示名稱。

此為選用參數。

## idc\$1region
<a name="python-idc_region"></a>
+ **預設值** — 無
+ **資料類型** — 字串

IAM Identity Center AWS 執行個體所在的 AWS 區域。

只有在 credentials\$1provider 組態選項中使用 `BrowserIdcAuthPlugin` 進行身分驗證時，才需要此參數。

## idp\$1partition
<a name="python-idp_partition-option"></a>
+ **預設值** — 無
+ **資料類型** — 字串

指定設定身分提供者 (IdP) 的雲端分割區。這會決定驅動程式連線到哪個 IdP 身分驗證端點。

如果此參數保留空白，驅動程式會預設為商業分割區。可能值為：
+  `us-gov`：如果您的 IdP 是在 Azure Government 中設定，請使用此值。例如，Azure AD Government 會使用端點 `login.microsoftonline.us`。
+  `cn`：如果您的 IdP 是在中國雲端分割區中設定，請使用此值。例如，Azure AD 中國使用端點 `login.chinacloudapi.cn`。

此為選用參數。

## idpPort
<a name="python-idp-port-option"></a>
+ **預設值** — 7890
+ **資料類型** — 整數

IdP 會將 SAML 聲明傳送到的接聽連接埠。

此為必要參數。

## idp\$1response\$1timeout
<a name="python-idp-response-timeout-option"></a>
+ **預設值** — 120
+ **資料類型** — 整數

從 IdP 擷取 SAML 聲明的逾時。

此為必要參數。

## idp\$1tenant
<a name="python-idp-tenant-option"></a>
+ **預設值** — 無
+ **資料類型** — 字串

IdP 租用戶。

此為選用參數。

## issuer\$1url
<a name="python-issuer_url"></a>
+ **預設值** — 無
+ **資料類型** — 字串

 指向 AWS IAM Identity Center 伺服器的執行個體端點。

只有在 credentials\$1provider 組態選項中使用 `BrowserIdcAuthPlugin` 進行身分驗證時，才需要此參數。

## listen\$1port
<a name="python-listen-port-option"></a>
+ **預設值** — 7890
+ **資料類型** — 整數

透過瀏覽器外掛程式使用 SAML、Azure AD 或 IAM Identity Center AWS 服務時，驅動程式用來從身分提供者或授權碼接收 SAML 回應的連接埠。

此為選用參數。

## login\$1url
<a name="python-login-url-option"></a>
+ **預設值** — 無
+ **資料類型** — 字串

IdP 的單一登入 Url。

此為選用參數。

## max\$1prepared\$1statements
<a name="python-max-prepared-statements-option"></a>
+ **預設值** — 1000
+ **資料類型** — 整數

每個連線將快取的預備陳述式數量上限。將此參數設為 0 會停用快取機制。針對此參數輸入負數會將其設定為預設值。

此為選用參數。

## numeric\$1to\$1float
<a name="python-numeric-to-float-option"></a>
+ **預設值** — False
+ **資料類型** — 布林值

此選項指定連接器是否會將數值資料類型值從 decimal.Decimal 轉換為浮點數。依預設，連接器會接收 decimal.Decimal 形式的數值資料類型值，且不會對值進行轉換。

對於需要精確度的使用案例，不建議您啟用 numeric\$1to\$1float，因為得到的結果可能會經過四捨五入。

如需 decimal.Decimal 以及其與浮點數之間權衡的相關資訊，請參閱 Python 網站上的[小數 — 固定小數點和浮點數](https://docs.python.org/3/library/decimal.html)。

此為選用參數。

## partner\$1sp\$1id
<a name="python-partner-sp-id-option"></a>
+ **預設值** — 無
+ **資料類型** — 字串

針對以 Ping 進行的身分驗證所使用的合作夥伴 SP ID。

此為選用參數。

## password
<a name="python-password-option"></a>
+ **預設值** — 無
+ **資料類型** — 字串

用於身分驗證的密碼。

此為選用參數。

## port
<a name="python-port-option"></a>
+ **預設值** — 5439
+ **資料類型** — 整數

Amazon Redshift 叢集的連接埠號碼。

此為必要參數。

## preferred\$1role
<a name="python-preferred-role-option"></a>
+ **預設值** — 無
+ **資料類型** — 字串

目前連線偏好的 IAM 角色。

此為選用參數。

## principal\$1arn
<a name="python-principal-arn-option"></a>
+ **預設值** — 無
+ **資料類型** — 字串

要為其產生政策之使用者或 IAM 角色的 Amazon Resource Name (ARN)。建議您將政策連接至角色，然後將角色指派給您的使用者以提供存取權。

此為選用參數。

## profile
<a name="python-profile-option"></a>
+ **預設值** — 無
+ **資料類型** — 字串

登入 AWS AWS 資料檔案中包含登入資料的設定檔名稱。

此為選用參數。

## provider\$1name
<a name="python-provider_name-option"></a>
+ **預設值** — 無
+ **資料類型** — 字串

Redshift 原生身分驗證提供者的名稱。

此為選用參數。

## region
<a name="python-region-option"></a>
+ **預設值** — 無
+ **資料類型** — 字串

 AWS 區域 叢集所在的 。

此為選用參數。

## role\$1arn
<a name="python-role-arn-option"></a>
+ **預設值** — 無
+ **資料類型** — 字串

呼叫者所擔任角色的 Amazon Resource Name (ARN)。`JwtCredentialsProvider` 所指出的提供者會使用此參數。

若為 `JwtCredentialsProvider` 提供者，此為必要參數。否則，此為選擇性參數。

## role\$1session\$1name
<a name="python-role-session-name-option"></a>
+ **預設值** — jwt\$1redshift\$1session
+ **資料類型** — 字串

擔任角色工作階段的識別碼。一般來說，您會傳遞與應用程式使用者相關聯的名稱或識別碼。應用程式使用的臨時安全憑證會與該使用者相關聯。`JwtCredentialsProvider` 所指出的提供者會使用此參數。

此為選用參數。

## scope
<a name="python-scope-option"></a>
+ **預設值** — 無
+ **資料類型** — 字串

使用者可以同意的範圍清單 (以空格分隔)。指定這個參數可讓您的應用程式針對您想要呼叫的 API 取得同意。當您為 credentials\$1provider 選項指定 BrowserAzureOAuth2CredentialsProvider 時，便可以指定此參數。

BrowserAzureOAuth2CredentialsProvider 外掛程式需要此參數。

## secret\$1access\$1key\$1id
<a name="python-secret-access-key-id-option"></a>
+ **預設值** — 無
+ **資料類型** — 字串

針對 IAM 資料庫身分驗證而設定之 IAM 角色或使用者的私密存取金鑰。

此為選用參數。

## session\$1token
<a name="python-session-token-option"></a>
+ **預設值** — 無
+ **資料類型** — 字串

針對 IAM 資料庫身分驗證而設定之 IAM 角色或使用者的存取金鑰。如果使用臨時 AWS 登入資料，則需要此參數。

此為選用參數。

## serverless\$1acct\$1id
<a name="python-serverless-acct-id-option"></a>
+ **預設值** — 無
+ **資料類型** — 字串

Amazon Redshift Serverless 帳戶 ID。

此為選用參數。

## serverless\$1work\$1group
<a name="python-serverless-work-group-option"></a>
+ **預設值** — 無
+ **資料類型** — 字串

Amazon Redshift Serverless 工作群組名稱。

此為選用參數。

## ssl
<a name="python-ssl-option"></a>
+ **預設值** — True
+ **資料類型** — 布林值

會啟用 Secure Sockets Layer (SSL)。

此為必要參數。

## ssl\$1insecure
<a name="python-ssl-insecure-option"></a>
+ **預設值** — False
+ **資料類型** — 布林值

此值會指定是否要停用驗證 IdP 主機的伺服器 SSL 憑證。將此參數設定為 True 會停用驗證 IdP 主機的伺服器 SSL 憑證。建議您在生產環境中保留預設值 False。

此為選用參數。

## sslmode
<a name="python-sslmode-option"></a>
+ **預設值** — verify-ca
+ **資料類型** — 字串

連線至 Amazon Redshift 的安全。您可以指定下列任一項：
+ verify-ca
+ verify-full

此為必要參數。

## tcp\$1keepalive
<a name="python-tcp_keepalive-option"></a>
+ **預設值** — True
+ **資料類型** — 布林值

是否使用 TCP 保持連線來防止連線逾時。您可以指定下列值：
+ True：驅動器將使用 TCP 保持連線來防止連線逾時。
+ False：驅動器不會使用 TCP 保持連線。

此為選用參數。

## tcp\$1keepalive\$1count
<a name="python-tcp_keepalive_count-option"></a>
+ **預設值** — 無
+ **資料類型** — 整數

在判斷連線為非作用中之前，要傳送的未確認探查數目。例如，將值設定為 3，表示驅動器會先傳送 3 個未回應的保持連線封包，才確定連線非作用中。

如果未指定此參數，Amazon Redshift 會使用系統的預設值。

此為選用參數。

## tcp\$1keepalive\$1interval
<a name="python-tcp_keepalive_interval-option"></a>
+ **預設值** — 無
+ **資料類型** — 整數

後續保持連線探查之間的間隔 (以秒為單位)，如果驅動器未在此間隔之前收到探查的確認。如果您指定此參數，其必須是正整數。

如果未指定此參數，Amazon Redshift 會使用系統的預設值。

此為選用參數。

## tcp\$1keepalive\$1idle
<a name="python-tcp_keepalive_idle-option"></a>
+ **預設值** — 無
+ **資料類型** — 整數

無活動的持續時間 (以秒為單位)，經過這段時間後，驅動器會傳送第一個保持連線探查。例如，將值設定為 120，表示驅動器會等待 2 分鐘無活動的時間，才傳送第一個保持連線封包。如果您指定此參數，其必須是正整數。

如果未指定此參數，Amazon Redshift 會使用系統的預設值。

此為選用參數。

## timeout
<a name="python-timeout-option"></a>
+ **預設值** — 無
+ **資料類型** — 整數

對伺服器的連線在逾時前要經過的秒數。

此為選用參數。

## token
<a name="python-token-option"></a>
+ **預設值** — 無
+ **資料類型** — 字串

IAM Identity Center AWS 提供存取字符或由與 IAM Identity Center 連結的 Web 身分提供者提供的 OpenID Connect (OIDC) JSON Web Token AWS (JWT)。您的應用程式必須透過使用 IAM Identity Center AWS 或與 IAM Identity Center 連結的身分提供者來驗證應用程式的使用者來產生此字符 AWS 。

此參數適用於 `IdpTokenAuthPlugin`。

## token\$1type
<a name="python-token_type-option"></a>
+ **預設值** — 無
+ **資料類型** — 字串

`IdpTokenAuthPlugin` 中使用的權仗類型。

您可以指定下列值：

**ACCESS\$1TOKEN**  
如果您使用 AWS IAM Identity Center 提供的存取權杖，請輸入此選項。

**EXT\$1JWT**  
如果您使用與 AWS IAM Identity Center 整合的 Web 型身分提供者所提供的 OpenID Connect (OIDC) JSON Web Token (JWT)，請輸入此項。

此參數適用於 `IdpTokenAuthPlugin`。

## user
<a name="python-user-option"></a>
+ **預設值** — 無
+ **資料類型** — 字串

用於身分驗證的使用者名稱。

此為選用參數。

## web\$1identity\$1token
<a name="python-web-identity-token-option"></a>
+ **預設值** — 無
+ **資料類型** — 字串

由身分提供者提供的 OAuth 2.0 存取權杖或 OpenID Connect ID 權杖。請確保您的應用程式會透過以 Web 身分提供者對應用程式的使用者進行驗證來取得此權杖。`JwtCredentialsProvider` 所指出的提供者會使用此參數。

若為 `JwtCredentialsProvider` 提供者，此為必要參數。否則，此為選擇性參數。

# 匯入 Python 連接器
<a name="python-start-import"></a>

若要匯入 Python 連接器，請執行以下命令。

```
>>> import redshift_connector
```

若要使用 AWS 登入資料連線至 Amazon Redshift 叢集，請執行下列命令。

```
conn = redshift_connector.connect(
    host='examplecluster.abc123xyz789.us-west-1.redshift.amazonaws.com',
    port=5439,
    database='dev',
    user='awsuser',
    password='my_password'
 )
```

# 將 Python 連接器與 NumPy 進行整合
<a name="python-connect-integrate-numpy"></a>

以下是將 Python 連接器與 NumPy 進行整合的範例。

```
>>>  import numpy
#Connect to the cluster
>>> import redshift_connector
>>> conn = redshift_connector.connect(
     host='examplecluster.abc123xyz789.us-west-1.redshift.amazonaws.com',
     port=5439,
     database='dev',
     user='awsuser',
     password='my_password'
  )
  
# Create a Cursor object
>>> cursor = conn.cursor()

# Query and receive result set            
cursor.execute("select * from book")

result: numpy.ndarray = cursor.fetch_numpy_array()
print(result)
```

結果如下。

```
[['One Hundred Years of Solitude' 'Gabriel García Márquez']
['A Brief History of Time' 'Stephen Hawking']]
```

# 將 Python 連接器與 pandas 進行整合
<a name="python-connect-integrate-pandas"></a>

以下是將 Python 連接器與 pandas 進行整合的範例。

```
>>> import pandas

#Connect to the cluster
>>> import redshift_connector
>>> conn = redshift_connector.connect(
     host='examplecluster.abc123xyz789.us-west-1.redshift.amazonaws.com',
     port=5439,
     database='dev',
     user='awsuser',
     password='my_password'
  )
  
# Create a Cursor object
>>> cursor = conn.cursor()

# Query and receive result set
cursor.execute("select * from book")
result: pandas.DataFrame = cursor.fetch_dataframe()
print(result)
```

# 使用身分提供者外掛程式
<a name="python-connect-identity-provider-plugins"></a>

如需如何使用身分提供者外掛程式的一般資訊，請參閱[提供 IAM 登入資料的選項](options-for-providing-iam-credentials.md)。如需如何管理 IAM 身分的相關資訊 (包括 IAM 角色的最佳實務)，請參閱 [Amazon Redshift 中的身分和存取管理](redshift-iam-authentication-access-control.md)。

## 使用 ADFS 身分提供者外掛程式進行身分驗證
<a name="python-connect-identity-provider-active-dir"></a>

以下是使用 Active Directory Federation Service (ADFS) 身分提供者外掛程式來針對連線至 Amazon Redshift 資料庫的使用者進行驗證的範例。

```
>>> con = redshift_connector.connect(
    iam=True,
    database='dev',
    host='my-testing-cluster.abc.us-east-2.redshift.amazonaws.com',
    cluster_identifier='my-testing-cluster',
    credentials_provider='AdfsCredentialsProvider',
    user='brooke@myadfshostname.com',
    password='Hunter2',
    idp_host='myadfshostname.com'
)
```

## 使用 Azure 身分提供者外掛程式進行身分驗證
<a name="python-connect-identity-provider-azure"></a>

以下是使用 Azure 身分提供者外掛程式進行身分驗證的範例。您可以為 Azure 企業應用程式建立 `client_id` 和 `client_secret` 的值，如下所示。

```
>>>  con = redshift_connector.connect(
    iam=True,
    database='dev',
    host='my-testing-cluster.abc.us-east-2.redshift.amazonaws.com',
    cluster_identifier='my-testing-cluster',
    credentials_provider='AzureCredentialsProvider',
    user='brooke@myazure.org',
    password='Hunter2',
    idp_tenant='my_idp_tenant',
    client_id='my_client_id',
    client_secret='my_client_secret',
    preferred_role='arn:aws:iam:123:role/DataScientist'
)
```

## 使用 AWS IAM Identity Center 身分提供者外掛程式進行身分驗證
<a name="python-connect-identity-provider-aws-idc"></a>

 以下是使用 IAM Identity Center AWS 身分提供者外掛程式進行身分驗證的範例。

```
with redshift_connector.connect(
credentials_provider='BrowserIdcAuthPlugin',
host='my-testing-cluster.abc.us-east-2.redshift.amazonaws.com',
database='dev',
idc_region='us-east-1',
issuer_url='https://identitycenter.amazonaws.com/ssoins-790723ebe09c86f9',
idp_response_timeout=60,
listen_port=8100,
idc_client_display_name='Test Display Name',
# port value of 5439 is specified by default
)
```

## 使用 Azure Browser 身分提供者外掛程式進行身分驗證
<a name="python-connect-identity-provider-azure-browser"></a>

以下是使用 Azure Browser 身分提供者外掛程式來針對連線至 Amazon Redshift 資料庫的使用者進行驗證的範例。

由使用者提供登入憑據的瀏覽器會進行多重要素驗證。

```
>>>con = redshift_connector.connect(
    iam=True,
    database='dev',
    host='my-testing-cluster.abc.us-east-2.redshift.amazonaws.com',
    cluster_identifier='my-testing-cluster',
    credentials_provider='BrowserAzureCredentialsProvider',
    idp_tenant='my_idp_tenant',
    client_id='my_client_id',
)
```

## 使用 Okta 身分提供者外掛程式進行身分驗證
<a name="python-connect-identity-provider-okta"></a>

以下是使用 Okta 身分提供者外掛程式進行身分驗證的範例。您可以透過 Okta 應用程式取得 `idp_host`、`app_id` 和 `app_name` 的值。

```
>>> con = redshift_connector.connect(
    iam=True,
    database='dev',
    host='my-testing-cluster.abc.us-east-2.redshift.amazonaws.com',
    cluster_identifier='my-testing-cluster',
    credentials_provider='OktaCredentialsProvider',
    user='brooke@myazure.org',
    password='hunter2',
    idp_host='my_idp_host',
    app_id='my_first_appetizer',
    app_name='dinner_party'
)
```

## 搭配使用 JumpCloud 與一般 SAML 瀏覽器身分提供者外掛程式來進行身分驗證
<a name="python-connect-identity-provider-jumpcloud"></a>

以下是搭配使用 JumpCloud 與一般 SAML 瀏覽器身分提供者外掛程式來進行身分驗證的範例。

密碼是必要參數。但是，您不必輸入此參數，因為瀏覽器會進行多重要素驗證。

```
>>> con = redshift_connector.connect(
    iam=True,
    database='dev',
    host='my-testing-cluster.abc.us-east-2.redshift.amazonaws.com',
    cluster_identifier='my-testing-cluster',
    credentials_provider='BrowserSamlCredentialsProvider',
    user='brooke@myjumpcloud.org',
    password='',
    login_url='https://sso.jumpcloud.com/saml2/plustwo_melody'
)
```

# 使用 Amazon Redshift Python 連接器的範例
<a name="python-connect-examples"></a>

以下是如何使用 Amazon Redshift Python 連接器的範例。若要執行這些範例，您必須先安裝 Python 連接器。如需安裝 Amazon Redshift Python 連接器的相關資訊，請參閱[安裝 Amazon Redshift Python 連接器](python-driver-install.md)。如需可與 Python 連接器搭配使用之組態選項的相關資訊，請參閱 [Amazon Redshift Python 連接器的組態選項](python-configuration-options.md)。

**Topics**
+ [使用 AWS 登入資料連線至和查詢 Amazon Redshift 叢集](#python-connect-cluster)
+ [啟用自動遞交](#python-connect-enable-autocommit)
+ [設定游標 paramstyle](#python-connect-config-paramstyle)
+ [使用 COPY 從 Amazon S3 儲存貯體複寫資料，然後使用 UNLOAD 將資料寫入至 Amazon S3 儲存貯體](#python-connect-copy-unload-s3)

## 使用 AWS 登入資料連線至和查詢 Amazon Redshift 叢集
<a name="python-connect-cluster"></a>

下列範例會引導您使用 AWS 登入資料連線至 Amazon Redshift 叢集，然後查詢資料表並擷取查詢結果。

```
#Connect to the cluster
>>> import redshift_connector
>>> conn = redshift_connector.connect(
     host='examplecluster.abc123xyz789.us-west-1.redshift.amazonaws.com',
     database='dev',
     port=5439,
     user='awsuser',
     password='my_password'
  )
  
# Create a Cursor object
>>> cursor = conn.cursor()

# Query a table using the Cursor
>>> cursor.execute("select * from book")
                
#Retrieve the query result set
>>> result: tuple = cursor.fetchall()
>>> print(result)
 >> (['One Hundred Years of Solitude', 'Gabriel García Márquez'], ['A Brief History of Time', 'Stephen Hawking'])
```

## 啟用自動遞交
<a name="python-connect-enable-autocommit"></a>

自動遞交屬性會預設為關閉，以遵循 Python Database API Specification。執行復原命令後，您可以使用以下命令開啟連線的 autocommit 屬性，以確保沒有進行中的交易。

```
#Connect to the cluster
>>> import redshift_connector
>>> conn = redshift_connector.connect(...)

# Run a rollback command
>>>  conn.rollback()

# Turn on autocommit
>>>  conn.autocommit = True
>>>  conn.run("VACUUM")

# Turn off autocommit
>>>  conn.autocommit = False
```

## 設定游標 paramstyle
<a name="python-connect-config-paramstyle"></a>

游標的 paramstyle 可透過 cursor.paramstyle 進行修改。所使用的預設 paramstyle 是 `format`。此參數的有效值為 `qmark`、`numeric`、`named`、`format` 和 `pyformat`。

以下是使用各種 paramstyle 將參數傳遞至範例 SQL 陳述式的範例。

```
# qmark
redshift_connector.paramstyle = 'qmark'
sql = 'insert into foo(bar, jar) VALUES(?, ?)'
cursor.execute(sql, (1, "hello world"))

# numeric
redshift_connector.paramstyle = 'numeric'
sql = 'insert into foo(bar, jar) VALUES(:1, :2)'
cursor.execute(sql, (1, "hello world"))

# named
redshift_connector.paramstyle = 'named'
sql = 'insert into foo(bar, jar) VALUES(:p1, :p2)'
cursor.execute(sql, {"p1":1, "p2":"hello world"})

# format
redshift_connector.paramstyle = 'format'
sql = 'insert into foo(bar, jar) VALUES(%s, %s)'
cursor.execute(sql, (1, "hello world"))

# pyformat
redshift_connector.paramstyle = 'pyformat'
sql = 'insert into foo(bar, jar) VALUES(%(bar)s, %(jar)s)'
cursor.execute(sql, {"bar": 1, "jar": "hello world"})
```

## 使用 COPY 從 Amazon S3 儲存貯體複寫資料，然後使用 UNLOAD 將資料寫入至 Amazon S3 儲存貯體
<a name="python-connect-copy-unload-s3"></a>

下列範例顯示如何將資料從 Amazon S3 儲存貯體複製到資料表，然後從該資料表卸載回儲存貯體。

名為 `category_csv.txt` 且包含下列資料的文字檔案會上傳至 Amazon S3 儲存貯體：。

```
12,Shows,Musicals,Musical theatre
13,Shows,Plays,"All ""non-musical"" theatre"
14,Shows,Opera,"All opera, light, and ""rock"" opera"
15,Concerts,Classical,"All symphony, concerto, and choir concerts"
```

以下是 Python 程式碼範例，其會先連線至 Amazon Redshift 資料庫。然後，會建立名為 `category` 的資料表，並將 S3 儲存貯體中的 CSV 資料複製到資料表中。

```
#Connect to the cluster and create a Cursor
>>> import redshift_connector
>>> with redshift_connector.connect(...) as conn:
>>> with conn.cursor() as cursor:

#Create an empty table
>>>     cursor.execute("create table category (catid int, cargroup varchar, catname varchar, catdesc varchar)")

#Use COPY to copy the contents of the S3 bucket into the empty table 
>>>     cursor.execute("copy category from 's3://testing/category_csv.txt' iam_role 'arn:aws:iam::123:role/RedshiftCopyUnload' csv;")

#Retrieve the contents of the table
>>>     cursor.execute("select * from category")
>>>     print(cursor.fetchall())

#Use UNLOAD to copy the contents of the table into the S3 bucket
>>>     cursor.execute("unload ('select * from category') to 's3://testing/unloaded_category_csv.txt'  iam_role 'arn:aws:iam::123:role/RedshiftCopyUnload' csv;")

#Retrieve the contents of the bucket
>>>     print(cursor.fetchall())
 >> ([12, 'Shows', 'Musicals', 'Musical theatre'], [13, 'Shows', 'Plays', 'All "non-musical" theatre'], [14, 'Shows', 'Opera', 'All opera, light, and "rock" opera'], [15, 'Concerts', 'Classical', 'All symphony, concerto, and choir concerts'])
```

如果您未將 `autocommit` 設定為 true，請在執行 `execute()` 陳述式後使用 `conn.commit()` 遞交。

資料會卸載到 S3 儲存貯體中的 `unloaded_category_csv.text0000_part00` 檔案中，其內容如下：

```
12,Shows,Musicals,Musical theatre
13,Shows,Plays,"All ""non-musical"" theatre"
14,Shows,Opera,"All opera, light, and ""rock"" opera"
15,Concerts,Classical,"All symphony, concerto, and choir concerts"
```

# Amazon Redshift Python 連接器的 API 參考
<a name="python-api-reference"></a>

接下來，您可以找到 Amazon Redshift Python 連線器 API 操作的描述。

## redshift\$1connector
<a name="python-api-redshift_connector"></a>

接下來，您可以找到 `redshift_connector` API 操作的描述。

`connect(user, database, password[, port, …])`  
建立對 Amazon Redshift 叢集的連線。此函數會驗證使用者輸入、選擇性地使用身分提供者外掛程式進行驗證，然後建構連線物件。

`apilevel`  
支援 DBAPI 層級，目前為「2.0」。

`paramstyle``str(object=’’) -> str str(bytes_or_buffer[, encoding[, errors]]) -> str`  
要全域使用的資料庫 API 參數樣式。

## 連線
<a name="python-api-connection"></a>

接下來，您可以找到 Amazon Redshift Python 連接器的連線 API 操作描述。

`__init__(user, password, database[, host, …])`  
將原始連線物件初始化。

`cursor`  
建立繫結至此連線的游標物件。

`commit`  
遞交目前的資料庫交易。

`rollback`  
復原目前的資料庫交易。

`close`  
關閉資料庫連線。

`execute(cursor, operation, vals)`  
執行指定的 SQL 命令。根據 `redshift_connector.paramstyle` 的值，您可以提供序列或映射形式的參數。

`run(sql[, stream])`  
執行指定的 SQL 命令。您可以選擇性提供與 COPY 命令搭配使用的串流。

`xid(format_id, global_transaction_id, …)`  
建立交易 ID。只有 `global_transaction_id` 參數會用於 postgres。format\$1id 和 branch\$1qualifier 不會用於 postgres。`global_transaction_id` 可以是由傳回元組 (`format_id`, `global_transaction_id`, `branch_qualifier`) 的 postgres 支援的任何字串識別碼。

`tpc_begin(xid)`  
使用由格式 ID、全域交易 ID 和分支限定詞組成的交易 ID `xid` 來開始 TPC 交易。

`tpc_prepare`  
執行以 .tpc\$1begin 開始之交易的第一個階段。

`tpc_commit([xid])`  
以無引數方式呼叫時，.tpc\$1commit 會遞交先前使用 .tpc\$1prepare() 所準備的 TPC 交易。

`tpc_rollback([xid])`  
以無引數方式呼叫時，.tpc\$1rollback 會復原 TPC 交易。

`tpc_recover`  
傳回適合與 .tpc\$1commit(xid) 或 .tpc\$1rollback(xid) 搭配使用的待定交易 ID 清單。

## 游標
<a name="python-api-cursor"></a>

接下來，您可以找到游標 API 操作的描述。

`__init__(connection[, paramstyle])`  
將原始游標物件初始化。

`insert_data_bulk(filename, table_name, parameter_indices, column_names, delimiter, batch_size)`  
執行大量 INSERT 陳述式。

`execute(operation[, args, stream, …])`  
執行資料庫操作。

`executemany(operation, param_sets)`  
準備資料庫操作，然後針對所提供的所有參數序列或映射執行此操作。

`fetchone`  
擷取查詢結果集的下一列。

`fetchmany([num])`  
擷取下一組查詢結果資料列。

`fetchall`  
擷取查詢結果的所有剩餘資料列。

`close`  
立即關閉游標。

`__iter__`  
可對游標物件進行迭代以從查詢中擷取資料列。

`fetch_dataframe([num])`  
傳回上次查詢結果的資料框。

`write_dataframe(df, table)`  
將相同結構資料框寫入到 Amazon Redshift 資料庫。

`fetch_numpy_array([num])`  
傳回上次查詢結果的 NumPy 陣列。

`get_catalogs`  
Amazon Redshift 不支援來自單一連線的多個型錄。Amazon Redshift 只會傳回目前的型錄。

`get_tables([catalog, schema_pattern, …])`  
傳回系統內使用者定義的唯一公有資料表。

`get_columns([catalog, schema_pattern, …])`  
傳回 Amazon Redshift 資料庫中特定資料表內所有資料欄的清單。

## AdfsCredentialsProvider 外掛程式
<a name="python-adfs-credentials-plugin"></a>

以下是 Amazon Redshift Python 連接器的 AdfsCredentialsProvider 外掛程式 API 操作語法。

```
redshift_connector.plugin.AdfsCredentialsProvider()
```

## AzureCredentialsProvider 外掛程式
<a name="python-azure-credentials-plugin"></a>

以下是 Amazon Redshift Python 連接器的 AzureCredentialsProvider 外掛程式 API 操作語法。

```
redshift_connector.plugin.AzureCredentialsProvider()
```

## BrowserAzureCredentialsProvider 外掛程式
<a name="python-browser-azure-credentials-plugin"></a>

以下是 Amazon Redshift Python 連接器的 BrowserAzureCredentialsProvider 外掛程式 API 操作語法。

```
redshift_connector.plugin.BrowserAzureCredentialsProvider()
```

## BrowserSamlCredentialsProvider 外掛程式
<a name="python-browser-saml-credentials-plugin"></a>

以下是 Amazon Redshift Python 連接器的 BrowserSamlCredentialsProvider 外掛程式 API 操作語法。

```
redshift_connector.plugin.BrowserSamlCredentialsProvider()
```

## OktaCredentialsProvider 外掛程式
<a name="python-okta-credentials-plugin"></a>

以下是 Amazon Redshift Python 連接器的 OktaCredentialsProvider 外掛程式 API 操作語法。

```
redshift_connector.plugin.OktaCredentialsProvider()
```

## PingCredentialsProvider 外掛程式
<a name="python-ping-credentials-plugin"></a>

以下是 Amazon Redshift Python 連接器的 PingCredentialsProvider 外掛程式 API 操作語法。

```
redshift_connector.plugin.PingCredentialsProvider()
```

## SamlCredentialsProvider 外掛程式
<a name="python-saml-credentials-plugin"></a>

以下是 Amazon Redshift Python 連接器的 SamlCredentialsProvider 外掛程式 API 操作語法。

```
redshift_connector.plugin.SamlCredentialsProvider()
```

# Apache Spark 的 Amazon Redshift 整合
<a name="spark-redshift-connector"></a>

 [Apache Spark](https://aws.amazon.com/emr/features/spark/) 是一種分散式處理架構和程式設計模型，可協助您執行機器學習、串流處理或圖形分析。與 Apache Hadoop 類似，Spark 是一種開放原始碼、分散式處理系統，通常用於大數據的工作負載。Spark 具有經過最佳化的有向無環圖 (DAG) 執行引擎，並且會主動快取記憶體中的資料。這可以提高效能，對於某些算法和互動式查詢來說更是如此。

 這項整合可為您提供 Spark 連接器，讓您用於建置在 Amazon Redshift 和 Amazon Redshift Serverless 中讀取和寫入資料的 Apache Spark 應用程式。這些應用程式不會影響應用程式效能或資料的交易一致性。這項整合會自動納入到 [Amazon EMR](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/) 和 [AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/)，因此您可以立即執行會在資料擷取和轉換管道中存取資料並將資料載入到 Amazon Redshift 的 Apache Spark 任務。

目前，您可以搭配此整合使用 Spark 的 3.3.x、3.4.x、3.5.x 和 4.0.0 版。

 這項整合會提供下列功能：
+  AWS Identity and Access Management (IAM) 身分驗證。如需詳細資訊，請參閱 [Amazon Redshift 中的身分和存取管理](https://docs.aws.amazon.com/redshift/latest/mgmt/redshift-iam-authentication-access-control.html)。
+ 述詞和查詢下推，以提升效能。
+  Amazon Redshift 資料類型。
+ 對 Amazon Redshift 和 Amazon Redshift Serverless 的連線。

## 使用 Spark 連接器時的考量和限制
<a name="spark-redshift-connector-considerations"></a>
+  tempdir URI 會指向 Amazon S3 位置。此臨時目錄不會自動清理，因此可能會增加額外的費用。建議您使用《Amazon Simple Storage Service 使用者指南》**中的 [Amazon S3 生命週期政策](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lifecycle-mgmt.html)來定義 Amazon S3 儲存貯體的保留規則。
+  根據預設，如果 Amazon S3和 Redshift 叢集位於不同的 AWS 區域，Amazon S3 和 Redshift 之間的複本將無法運作。若要使用個別 AWS 區域，請將 `tempdir_region` 參數設定為用於 的 S3 儲存貯體區域`tempdir`。
+ 如果使用 `tempformat` 參數寫入 Parquet 資料，則會在 S3 和 Redshift 之間進行跨區域寫入。
+ 建議您使用 [Amazon S3 伺服器端加密](https://docs.aws.amazon.com/AmazonS3/latest/userguide/serv-side-encryption.html)來加密所用的 Amazon S3 儲存貯體。
+ 建議您[封鎖對 Amazon S3 儲存貯體的公開存取](https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-control-block-public-access.html)。
+  建議您不要將 Amazon Redshift 叢集設為可公開存取。
+  建議您開啟 [Amazon Redshift 稽核記錄](https://docs.aws.amazon.com/redshift/latest/mgmt/db-auditing.html)。
+  建議您開啟 [Amazon Redshift 靜態加密](https://docs.aws.amazon.com/redshift/latest/mgmt/security-server-side-encryption.html)。
+  建議您針對從 Amazon EMR 上的 Spark 到 Amazon Redshift 的 JDBC 連線開啟 SSL。
+ 建議您使用 Amazon Redshift 身分驗證參數的 `aws_iam_role` 參數傳遞 IAM 角色。

# 使用 Spark 連接器進行身分驗證
<a name="redshift-spark-connector-authentication"></a>

下圖描述了 Amazon S3、Amazon Redshift、Spark 驅動程式和 Spark 執行程式之間的身分驗證。

![\[這是 Spark 連接器的身分驗證圖。\]](http://docs.aws.amazon.com/zh_tw/redshift/latest/mgmt/images/spark-connector-authentication.png)


## Redshift 和 Spark 之間的身分驗證
<a name="redshift-spark-authentication"></a>

 您可以使用 Amazon Redshift 提供的 JDBC 驅動器 2.x 版，透過指定登入憑證使用 Spark 連接器連線到 Amazon Redshift。若要使用 IAM，請[設定 JDBC url 以使用 IAM 身分驗證](https://docs.aws.amazon.com/redshift/latest/mgmt/generating-iam-credentials-configure-jdbc-odbc.html)。若要從 Amazon EMR 或 連線至 Redshift 叢集 AWS Glue，請確定您的 IAM 角色具有擷取臨時 IAM 登入資料的必要許可。下列清單描述 IAM 角色要擷取憑證和執行 Amazon S3 操作所需的所有許可。
+ [ Redshift:GetClusterCredentials](https://docs.aws.amazon.com/redshift/latest/APIReference/API_GetClusterCredentials.html) (適用於佈建的 Redshift 叢集)
+ [ Redshift:DescribeClusters](https://docs.aws.amazon.com/redshift/latest/APIReference/API_DescribeClusters.html) (適用於佈建的 Redshift 叢集)
+ [ Redshift:GetWorkgroup](https://docs.aws.amazon.com/redshift-serverless/latest/APIReference/API_GetWorkgroup.html) (適用於 Amazon Redshift Serverless 工作群組)
+ [ Redshift:GetCredentials](https://docs.aws.amazon.com/redshift-serverless/latest/APIReference/API_GetCredentials.html) (適用於 Amazon Redshift Serverless 工作群組)
+ [ s3:ListBucket](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListBuckets.html)
+ [ s3:GetBucket](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_GetBucket.html)
+ [ s3:GetObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html)
+ [ s3:PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)
+ [ s3:GetBucketLifecycleConfiguration](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketLifecycleConfiguration.html)

 如需 GetClusterCredentials 的詳細資訊，請參閱 [ GetClusterCredentials 的 IAM 政策](https://docs.aws.amazon.com/redshift/latest/mgmt/redshift-iam-access-control-identity-based.html#redshift-policy-resources.getclustercredentials-resources)。

您還必須確保 Amazon Redshift 可以在 `COPY` 和 `UNLOAD` 操作期間擔任 IAM 角色。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": "redshift.amazonaws.com"
            },
            "Action": "sts:AssumeRole"
        }
    ]
}
```

------

如果您使用的是最新的 JDBC 驅動程式，該驅動程式會自動管理從 Amazon Redshift 自我簽署憑證到 ACM 憑證的轉換。但是，您必須[指定 JDBC url 的 SSL 選項](https://docs.aws.amazon.com/redshift/latest/mgmt/jdbc20-configuration-options.html#jdbc20-ssl-option)。

 以下是如何指定 JDBC 驅動程式 URL 和 `aws_iam_role` 以連線到 Amazon Redshift 的範例。

```
df.write \
  .format("io.github.spark_redshift_community.spark.redshift ") \
  .option("url", "jdbc:redshift:iam://<the-rest-of-the-connection-string>") \
  .option("dbtable", "<your-table-name>") \
  .option("tempdir", "s3a://<your-bucket>/<your-directory-path>") \
  .option("aws_iam_role", "<your-aws-role-arn>") \
  .mode("error") \
  .save()
```

## Amazon S3 和 Spark 之間的身分驗證
<a name="spark-s3-authentication"></a>

 如果您使用 IAM 角色在 Spark 和 Amazon S3 之間進行驗證，請使用下列其中一種方法：
+ 適用於 Java 的 AWS SDK 會使用 DefaultAWSCredentialsProviderChain 類別實作的預設登入資料提供者鏈結，自動嘗試尋找 AWS 登入資料。如需詳細資訊，請參閱[使用預設憑證提供者鏈結](https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/credentials.html#credentials-default)。
+ 您可以透過 [ Hadoop 組態屬性](https://github.com/apache/hadoop/blob/trunk/hadoop-tools/hadoop-aws/src/site/markdown/tools/hadoop-aws/index.md)指定 AWS 金鑰。例如，如果您的 `tempdir` 組態指向 `s3n://` 檔案系統，請在 Hadoop XML 組態檔案中設定 `fs.s3n.awsAccessKeyId` 和 `fs.s3n.awsSecretAccessKey` 屬性，或呼叫 `sc.hadoopConfiguration.set()` 以變更 Spark 的全域 Hadoop 組態。

例如，假設您使用 s3n 檔案系統，請新增：

```
sc.hadoopConfiguration.set("fs.s3n.awsAccessKeyId", "YOUR_KEY_ID")
sc.hadoopConfiguration.set("fs.s3n.awsSecretAccessKey", "YOUR_SECRET_ACCESS_KEY")
```

若為 s3a 檔案系統，請新增：

```
sc.hadoopConfiguration.set("fs.s3a.access.key", "YOUR_KEY_ID")
sc.hadoopConfiguration.set("fs.s3a.secret.key", "YOUR_SECRET_ACCESS_KEY")
```

如果您使用 Python，請使用下列操作：

```
sc._jsc.hadoopConfiguration().set("fs.s3n.awsAccessKeyId", "YOUR_KEY_ID")
sc._jsc.hadoopConfiguration().set("fs.s3n.awsSecretAccessKey", "YOUR_SECRET_ACCESS_KEY")
```
+ 在 `tempdir` URL 中編碼身分驗證金鑰。例如，URI `s3n://ACCESSKEY:SECRETKEY@bucket/path/to/temp/dir` 會編碼金鑰對 (`ACCESSKEY`,`SECRETKEY`)。

## Redshift 和 Amazon S3 之間的身分驗證
<a name="redshift-s3-authentication"></a>

 如果您在查詢中使用 COPY 和 UNLOAD 命令，則也必須向 Amazon S3 授予 Amazon Redshift 的存取權，以代表您執行查詢。若要這麼做，請先[授權 Amazon Redshift 存取其他 AWS 服務](https://docs.aws.amazon.com/redshift/latest/mgmt/authorizing-redshift-service.html)，然後使用 [IAM 角色授權 COPY 和 UNLOAD 操作](https://docs.aws.amazon.com/redshift/latest/mgmt/copy-unload-iam-role.html)。

我們建議的最佳實務是，將許可政策附加到 IAM 角色，然後根據需要將其指派給使用者和群組。如需詳細資訊，請參閱 [Amazon Redshift 中的身分和存取管理](https://docs.aws.amazon.com/redshift/latest/mgmt/redshift-iam-authentication-access-control.html)。

## 與 整合 AWS Secrets Manager
<a name="redshift-secrets-manager-authentication"></a>

您可以從 AWS Secrets Manager中儲存的機密擷取 Redshift 的使用者名稱和密碼憑證。若要自動提供 Redshift 憑證，請使用 `secret.id` 參數。如需如何建立 Redshift 憑證機密的相關資訊，請參閱[建立 AWS Secrets Manager 資料庫機密](https://docs.aws.amazon.com/secretsmanager/latest/userguide/create_database_secret.html)。

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/redshift/latest/mgmt/redshift-spark-connector-authentication.html)

**注意**  
 確認：本文件包含由 [Apache Software Foundation](http://www.apache.org/) 根據 [Apache 2.0 授權](https://www.apache.org/licenses/LICENSE-2.0)所開發的範例程式碼和語言。

# 透過下推功能改善效能
<a name="spark-redshift-connector-pushdown"></a>

 Spark 連接器會自動套用述詞和查詢下推功能，以針對效能進行最佳化。這項支援表示，如果您在查詢中使用受支援的函數，Spark 連接器便會將該函數轉換為 SQL 查詢，並在 Amazon Redshift 中執行該查詢。此最佳化可減少所擷取的資料，因此 Apache Spark 可以處理較少的資料，獲得較好的效能。依預設，系統會自動啟動下推功能。若要加以停用，請將 `autopushdown` 設定為 false。

```
import sqlContext.implicits._val 
 sample= sqlContext.read
    .format("io.github.spark_redshift_community.spark.redshift")
    .option("url",jdbcURL )
    .option("tempdir", tempS3Dir)
    .option("dbtable", "event")
    .option("autopushdown", "false")
    .load()
```

 下推功能支援下列函數。如果您使用的函數不在此清單中，Spark 連接器會在 Spark 中執行此函數，而不是在 Amazon Redshift 中執行，因此無法獲得最佳效能。如需 Spark 中函數的完整清單，請參閱[內建函數](https://spark.apache.org/docs/latest/api/sql/index.html)。
+ 彙總函數
  + avg
  + count
  + max
  + min
  + sum
  + stddev\$1samp
  + stddev\$1pop
  + var\$1samp
  + var\$1pop
+ 布林值運算子
  + in
  + isnull
  + isnotnull
  + contains
  + endswith
  + startswith
+ 邏輯運算子
  + 及
  + 或
  + not (or \$1)
+ 數學函式
  + \$1
  + -
  + \$1
  + /
  + - (unary)
  + abs
  + acos
  + asin
  + atan
  + ceil
  + cos
  + exp
  + floor
  + greatest
  + least
  + log10
  + pi
  + pow
  + round
  + sin
  + sqrt
  + tan
+ 其他函數
  + cast
  + coalesce
  + decimal
  + 如
  + in
+ 關係運算子
  + \$1=
  + =
  + >
  + >=
  + <
  + <=
+ 字串函數
  + ascii
  + lpad
  + rpad
  + translate
  + upper
  + lower
  + length
  + trim
  + ltrim
  + rtrim
  + like
  + substring
  + concat
+ 日期和時間函數
  + add\$1months
  + date
  + date\$1add
  + date\$1sub
  + date\$1trunc
  + timestamp
  + trunc
+ 數學運算
  + CheckOverflow
  + PromotePrecision
+ 關係運算
  + Aliases (例如 AS)
  + CaseWhen
  + Distinct
  + InSet
  + Joins 和 cross joins
  + 限制
  + Unions, union all
  + ScalarSubquery
  + Sorts (遞增和遞減)
  + UnscaledValue

# 其他組態選項
<a name="spark-redshift-connector-other-config"></a>

在此頁面上，您可以找到可為 Amazon Redshift Spark 連接器指定之選項的說明。

## 字串欄的大小上限
<a name="spark-redshift-connector-other-config-max-size"></a>

在建立儲存為 VARCHAR(256) 的資料表時，Redshift 會將字串資料欄建立為文字資料欄。如果你想要支援更大尺寸的資料欄，則可以使用 maxlength 來指定字串資料欄的最大長度。以下範例說明如何指定 `maxlength`。

```
columnLengthMap.foreach { case (colName, length) =>
  val metadata = new MetadataBuilder().putLong("maxlength", length).build()
  df = df.withColumn(colName, df(colName).as(colName, metadata))
}
```

## 資料欄類型
<a name="spark-redshift-connector-other-config-column-type"></a>

若要設定資料欄類型，請使用 `redshift_type` 欄位。

```
columnTypeMap.foreach { case (colName, colType) =>
  val metadata = new MetadataBuilder().putString("redshift_type", colType).build()
  df = df.withColumn(colName, df(colName).as(colName, metadata))
}
```

## 欄的壓縮編碼
<a name="spark-redshift-connector-other-config-compression-encoding"></a>

 若要在資料欄上使用特定的壓縮編碼，請使用編碼欄位。如需支援壓縮編碼的完整清單，請參閱[壓縮編碼](https://docs.aws.amazon.com/redshift/latest/dg/c_Compression_encodings.html)。

## 欄的說明
<a name="spark-redshift-connector-other-config-description"></a>

若要設定描述，請使用 `description` 欄位。

## Redshift 和 Amazon S3 之間的身分驗證
<a name="spark-redshift-connector-other-config-unload-as-text"></a>

 根據預設，結果會以 parquet 格式卸載到 Amazon S3。若要將結果卸載為以豎線分隔的文字檔案，請指定下列選項。

```
.option("unload_s3_format", "TEXT")
```

## Pushdown 陳述式
<a name="spark-redshift-connector-other-config-lazy-pushdown"></a>

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/redshift/latest/mgmt/spark-redshift-connector-other-config.html)

## 連接器參數
<a name="spark-redshift-connector-other-config-spark-parameters"></a>

Spark SQL 中的參數映射或 `OPTIONS` 支援以下設定。

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/redshift/latest/mgmt/spark-redshift-connector-other-config.html)

**注意**  
 確認：本文件包含由 [Apache Software Foundation](http://www.apache.org/) 根據 [Apache 2.0 授權](https://www.apache.org/licenses/LICENSE-2.0)所開發的範例程式碼和語言。

# 支援的資料類型
<a name="spark-redshift-connector-data-types"></a>

Spark 連接器支援 Amazon Redshift 中的下列資料類型。如需 Amazon Redshift 中支援的資料類型完整清單，請參閱[資料類型](https://docs.aws.amazon.com//redshift/latest/dg/c_Supported_data_types.html)。如果資料類型不在下表中，則表示 Spark 連接器不支援該資料類型。

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/redshift/latest/mgmt/spark-redshift-connector-data-types.html)

## 複雜資料類型
<a name="spark-redshift-connector-complex-data-types"></a>

 您可以使用 Spark 連接器在 Redshift SUPER 資料類型資料欄中讀取和寫入 Spark 複雜資料類型 (例如 `ArrayType`、`MapType` 和 `StructType`)。如果您在讀取操作期間提供結構描述，資料欄中的資料會轉換為其在 Spark 中對應的複雜類型，包括任何巢狀類型。此外，如果已啟用 `autopushdown`，則巢狀屬性、映射值和陣列索引的投影會向下推送至 Redshift，在只存取一部分資料時，就不再需要卸載整個巢狀資料結構。

當您從連接器寫入 DataFrames 時，任何類型為 `MapType` (使用`StringType`)、`StructType`、或 `ArrayType` 的資料欄都會寫入到 Redshift SUPER 資料類型資料欄。在撰寫這些巢狀資料結構時，`tempformat` 參數的類型必須是 `CSV`、`CSV GZIP` 或 `PARQUET`。使用 `AVRO` 會導致例外狀況。撰寫具有 `StringType` 以外索引鍵類型的 `MapType` 資料結構也會導致例外狀況。

### StructType
<a name="spark-redshift-connector-complex-data-types-examples-structtype"></a>

下列範例會示範如何建立具有 SUPER 資料類型且包含以下結構的資料表

```
create table contains_super (a super);
```

然後，您可以使用連接器，在使用如下列範例中的結構描述的資料表中，從 SUPER 資料欄 `a` 查詢 `StringType` 欄位 `hello`。

```
import org.apache.spark.sql.types._

val sc = // existing SparkContext
val sqlContext = new SQLContext(sc)

val schema = StructType(StructField("a", StructType(StructField("hello", StringType) ::Nil)) :: Nil)

val helloDF = sqlContext.read
.format("io.github.spark_redshift_community.spark.redshift")
.option("url", jdbcURL )
.option("tempdir", tempS3Dir)
.option("dbtable", "contains_super")
.schema(schema)
.load().selectExpr("a.hello")
```

下列範例會示範如何將結構寫入到資料欄 `a`。

```
import org.apache.spark.sql.types._
import org.apache.spark.sql._

val sc = // existing SparkContext
val sqlContext = new SQLContext(sc)

val schema = StructType(StructField("a", StructType(StructField("hello", StringType) ::Nil)) :: Nil)
val data = sc.parallelize(Seq(Row(Row("world"))))
val mydf = sqlContext.createDataFrame(data, schema)

mydf.write.format("io.github.spark_redshift_community.spark.redshift").
option("url", jdbcUrl).
option("dbtable", tableName).
option("tempdir", tempS3Dir).
option("tempformat", "CSV").
mode(SaveMode.Append).save
```

### MapType
<a name="spark-redshift-connector-complex-data-types-examples-maptype"></a>

如果您偏好使用 `MapType` 來表示資料，則可以在結構描述中使用 `MapType` 資料結構，並擷取映射中與索引鍵對應的值。請注意，`MapType` 資料結構中的所有索引鍵都必須是字串類型，並且所有值都必須是相同類型，例如 int。

下列範例會示範如何取得資料欄 `a` 中索引鍵 `hello` 的值。

```
import org.apache.spark.sql.types._

val sc = // existing SparkContext
val sqlContext = new SQLContext(sc)

val schema = StructType(StructField("a", MapType(StringType, IntegerType))::Nil)

val helloDF = sqlContext.read
    .format("io.github.spark_redshift_community.spark.redshift")
    .option("url", jdbcURL )
    .option("tempdir", tempS3Dir)
    .option("dbtable", "contains_super")
    .schema(schema)
    .load().selectExpr("a['hello']")
```

### ArrayType
<a name="spark-redshift-connector-complex-data-types-examples-arraytype"></a>

如果資料欄包含陣列而不是結構，您可以使用連接器來查詢陣列中的第一個元素。

```
import org.apache.spark.sql.types._

val sc = // existing SparkContext
val sqlContext = new SQLContext(sc)

val schema = StructType(StructField("a", ArrayType(IntegerType)):: Nil)

val helloDF = sqlContext.read
    .format("io.github.spark_redshift_community.spark.redshift")
    .option("url", jdbcURL )
    .option("tempdir", tempS3Dir)
    .option("dbtable", "contains_super")
    .schema(schema)
    .load().selectExpr("a[0]")
```

### 限制
<a name="spark-redshift-connector-complex-data-types-limitations"></a>

搭配 Spark 連接器使用複雜資料類型時有下列限制：
+ 所有巢狀的結構欄位名稱和映射索引鍵都必須小寫。如果要查詢包含大寫字母的複雜欄位名稱，因應措施是您可以嘗試省略結構描述，並使用 `from_json` Spark 函數在本機轉換傳回的字串。
+ 讀取或寫入操作中使用的任何映射欄位都必須只有 `StringType` 索引鍵。
+ 只有 `CSV`、`CSV GZIP` 和 `PARQUET ` 才是支援將複雜類型寫入到 Redshift 的 tempformat 值。嘗試使用 `AVRO ` 會擲回例外狀況。

# 設定 Amazon Redshift ODBC 驅動程式 2.x 版連線
<a name="odbc20-install"></a>

您可以從許多第三方 SQL 用戶端工具和應用程式使用 ODBC 連線來連線至 Amazon Redshift 叢集。如果用戶端工具支援 JDBC，您可以選擇使用這種連線，而非 ODBC，因為 JDBC 的設定簡單。不過，如果您的用戶端工具不支援 JDBC，您可以按照本節中的步驟，在用戶端電腦或 Amazon EC2 執行個體上設定 ODBC 連線。

Amazon Redshift 為 Linux、Windows 和 Mac 作業系統提供 64 位元 ODBC 驅動程式；32 位元 ODBC 驅動程式已停用。除了緊急的安全修補程式外，不會再針對 32 位元 ODBC 驅動程式發佈其他更新。

如需 ODBC 驅動程式變更的最新資訊，請參閱[變更日誌](https://github.com/aws/amazon-redshift-odbc-driver/blob/master/CHANGELOG.md)。

**Topics**
+ [取得 ODBC URL](odbc20-getting-url.md)
+ [在 Microsoft Windows 上使用 Amazon Redshift ODBC 驅動器](odbc20-install-config-win.md)
+ [在 Linux 上使用 Amazon Redshift ODBC 驅動器](odbc20-install-config-linux.md)
+ [在 Apple macOS 上使用 Amazon Redshift ODBC 驅動程式](odbc20-install-config-mac.md)
+ [身分驗證方法](odbc20-authentication-ssl.md)
+ [資料類型轉換](odbc20-converting-data-types.md)
+ [ODBC 驅動器選項](odbc20-configuration-options.md)
+ [先前的 ODBC 驅動程式版本](odbc20-previous-versions.md)

# 取得 ODBC URL
<a name="odbc20-getting-url"></a>

Amazon Redshift 會在 Amazon Redshift 主控台中顯示叢集的 ODBC URL。此 URL 包含要在用戶端電腦和資料庫之間設定連線所需的資訊。

ODBC URL 採用下列格式：

```
Driver={driver}; Server=endpoint_host; Database=database_name; UID=user_name; PWD=password; Port=port_number
```

前面格式的欄位具有下列值：


| 欄位 | Value | 
| --- | --- | 
| Driver | 要使用的 64 位元 ODBC 驅動程式的名稱：Amazon Redshift ODBC 驅動程式 (x64)。 | 
| Server | Amazon Redshift 叢集的端點主機。 | 
| Database | 您為叢集建立的資料庫。 | 
| UID | 有許可而可連線至資料庫之資料庫使用者帳戶的使用者名稱。雖然這個值是資料庫層級的許可而非叢集層級的許可，但您可以使用您在啟動叢集時所設定的 Redshift 管理員使用者帳戶。 | 
| PWD | 用來連線至資料庫之資料庫使用者帳戶的密碼。 | 
| Port | 您啟動叢集時指定的連接埠號碼。如果有防火牆，請確定此連接埠已開放給您使用。 | 

以下是 ODBC URL 範例：

```
Driver={Amazon Redshift ODBC Driver (x64)}; Server=examplecluster.abc123xyz789.us-west-2.redshift.amazonaws.com; Database=dev; UID=adminuser; PWD=insert_your_admin_user_password_here; Port=5439
```

如需有關可在何處找到 ODBC URL 的資訊，請參閱[尋找叢集連線字串](https://docs.aws.amazon.com/redshift/latest/mgmt/configuring-connections.html#connecting-connection-string)。

# 在 Microsoft Windows 上使用 Amazon Redshift ODBC 驅動器
<a name="odbc20-install-config-win"></a>

您必須在存取 Amazon Redshift 資料倉儲的用戶端電腦上安裝 Amazon Redshift ODBC 驅動程式。針對安裝驅動程式的每一台電腦，有下列最低要求：
+ 機器上的管理員權限。
+ 機器符合下列系統要求：
  + 下列其中一個操作系統：
    + Windows 10 或 8.1。
    + Windows Server 2019、2016 或 2012。
  + 100 MB 的可用磁碟空間。
  + 已安裝 Visual C\$1\$1 Redistributable for Visual Studio 2015，適用於 64 位元。您可以在 Microsoft 網站上的[下載適用於 Visual Studio 2022 的 Visual C\$1\$1 可轉散發套件](https://visualstudio.microsoft.com/downloads/#microsoft-visual-c-redistributable-for-visual-studio-2022)下載安裝套件。

# 下載並安裝 Amazon Redshift ODBC 驅動器
<a name="odbc20-install-win"></a>

使用下列程序來下載並安裝適用於 Windows 作業系統的 Amazon Redshift ODBC 驅動程式。僅在您執行的第三方應用程式經認證可與 Amazon Redshift 搭配使用，且該應用程式需要特定驅動程式時，才使用不同的驅動程式。

若要下載並安裝 ODBC 驅動程式：

1. 下載下列驅動程式：[64 位元 ODBC 驅動程式 2.1.15.0 版](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.15.0/AmazonRedshiftODBC64-2.1.15.0.msi) 

   此驅動程式的名稱是 **Amazon Redshift ODBC 驅動程式 (x64)**。

1. 檢閱 [Amazon Redshift ODBC 驅動程式 2.x 版授權](https://github.com/aws/amazon-redshift-odbc-driver/blob/master/LICENSE)。

1. 按兩下 .msi 檔案，然後遵循精靈中的步驟來安裝驅動程式。

# 建立 ODBC 連線的系統 DSN 項目
<a name="odbc20-dsn-win"></a>

在下載並安裝 ODBC 驅動程式之後，請將資料來源名稱 (DSN) 項目新增至用戶端電腦或 Amazon EC2 執行個體。SQL 用戶端工具可以使用此資料來源以連線至 Amazon Redshift 資料庫。

建議您建立系統 DSN，而不是使用者 DSN。部分應用程式會使用不同資料庫使用者帳戶載入資料，而且可能無法偵測到在其他資料庫使用者帳戶下建立的使用者 DSN。

**注意**  
對於使用 AWS Identity and Access Management (IAM) 登入資料或身分提供者 (IdP) 登入資料的身分驗證，需要額外的步驟。如需詳細資訊，請參閱[設定 JDBC 或 ODBC 連線以使用 IAM 憑證](https://docs.aws.amazon.com/redshift/latest/mgmt/generating-iam-credentials-configure-jdbc-odbc.html)。

若要建立 ODBC 連線的系統 DSN 項目：

1. 在**開始**功能表中，輸入「ODBC 資料來源」。選擇 **ODBC 資料來源**。

   確定您選擇的 ODBC 資料來源管理員具有與您要用來連線到 Amazon Redshift 的用戶端應用程式相同的位元。

1. 在 **ODBC 資料來源管理員**中，選擇**驅動程式**索引標籤並尋找下列驅動程式資料夾：**Amazon Redshift ODBC 驅動程式 (x64)**。

1. 選擇**系統 DSN**索引標籤，為電腦上的所有使用者設定驅動程式，或選擇**使用者 DSN**索引標籤，只為您的資料庫使用者帳戶設定驅動程式。

1. 選擇**新增**。**Create New Data Source (建立新的資料來源)** 視窗會開啟。

1. 選擇 **Amazon Redshift ODBC 驅動程式 (x64)**，然後選擇**完成**。**Amazon Redshift ODBC 驅動程式 DSN 設定**視窗會開啟。

1. 在**連線設定**區段下，輸入下列資訊：
   + 

**資料來源名稱**  
 輸入資料來源的名稱。例如，如果您遵循了《Amazon Redshift 入門指南》**，則可能會輸入 `exampleclusterdsn`，以便輕鬆記住與此 DSN 建立關聯的叢集。
   + 

**Server**  
 指定 Amazon Redshift 叢集的端點主機。您可以在 Amazon Redshift 主控台的叢集詳細資訊頁面上找到此資訊。如需詳細資訊，請參閱[在 Amazon Redshift 中設定連線](https://docs.aws.amazon.com/redshift/latest/mgmt/configuring-connections.html)。
   + 

**站點**  
 輸入資料庫使用的連接埠號碼。根據您在建立、修改或遷移叢集時所選取的連接埠而定，允許存取選取的連接埠。
   + 

**資料庫**  
 輸入 Amazon Redshift 資料庫的名稱。如果您在未指定資料庫名稱的情況下啟動了叢集，請輸入 `dev`。否則，請使用您在啟動過程選擇的名稱。如果您遵循了《Amazon Redshift 入門指南》**，請輸入 `dev`。

1. 在**身分驗證**區段下，指定要設定標準或 IAM 身分驗證的組態選項。

1. 選擇 **SSL 選項**，並指定下列項目的值：
   + 

**身分驗證方式**  
選擇用於處理 Secure Sockets Layer (SSL) 的模式。在測試環境中，您可以使用 `prefer`。不過，若為生產環境且需要交換安全資料時，請使用 `verify-ca` 或 `verify-full`。
   + 

**最低 TLS**  
或者，選擇驅動器允許資料存放區用於加密連線的最低 TLS/SSL 版本。例如，如果您指定 TLS 1.2，則無法使用 TLS 1.1 來加密連線。預設版本是 TLS 1.2。

1.  在**代理**索引標籤中，指定任何代理連線設定。

1. 在**游標**索引標籤中，指定有關如何將查詢結果傳回給 SQL 用戶端工具或應用程式的選項。

1. 在**進階選項**中，指定 `logLevel`、`logPath`、`compression` 和其他選項的值。

1. 選擇**測試**。如果用戶端電腦可以連線至 Amazon Redshift 資料庫，則會出現下列訊息：**連線成功**。如果用戶端電腦無法連線至資料庫，您可以透過產生日誌檔案並聯絡 AWS 支援來疑難排解可能的問題。如需有關產生日誌的資訊，請參閱 (LINK)。

1.  選擇**確定**。

# 在 Linux 上使用 Amazon Redshift ODBC 驅動器
<a name="odbc20-install-config-linux"></a>

您必須在存取 Amazon Redshift 資料倉儲的用戶端電腦上安裝 Amazon Redshift ODBC 驅動程式。針對安裝驅動程式的每一台電腦，有下列最低要求：
+ 機器上的根存取。
+ 下列其中一個發行版本：
  + Red Hat® Enterprise Linux® (RHEL) 8 或更新版本。
  + CentOS 8 或更新版本。
+ 150 MB 的可用磁碟空間
+ unixODBC 2.2.14 或更新版本。
+ glibc 2.26 或更新版本。

# 下載並安裝 Amazon Redshift ODBC 驅動器
<a name="odbc20-install-linux"></a>

若要下載並安裝適用於 Linux 的 Amazon Redshift ODBC 驅動程式 2.x 版：

1.  下載下列驅動程式：
   + [x86 64 位元 RPM 驅動程式版本 2.1.15.0](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.15.0/AmazonRedshiftODBC-64-bit-2.1.15.0.x86_64.rpm) 
   + [ARM 64 位元 RPM 驅動程式版本 2.1.15.0](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.15.0/AmazonRedshiftODBC-64-bit-2.1.15.0.aarch64.rpm) 
**注意**  
32 位元的 ODBC 驅動程式已停用。除了緊急的安全修補程式外，不會再發佈其他更新。

1.  移至您下載套件的位置，然後執行下列其中一個命令。使用與您的 Linux 發行版本相應的指令。

   在 RHEL 和 CentOS 作業系統上，執行下列命令：

   ```
   yum --nogpgcheck localinstall RPMFileName
   ```

   將 `RPMFileName` 取代為 RPM 套件檔案名稱。例如，下列命令示範安裝 64 位元驅動程式：

   ```
   yum --nogpgcheck localinstall AmazonRedshiftODBC-64-bit-2.x.xx.xxxx.x86_64.rpm
   ```

# 使用 ODBC 驅動器管理員設定 ODBC 驅動器
<a name="odbc20-config-linux"></a>

在 Linux 上，您使用的是 ODBC 驅動程式管理員來設定 ODBC 連線設定。ODBC 驅動程式管理員使用組態檔案來定義及設定 ODBC 資料來源和驅動程式。您使用的 ODBC 驅動程式管理員視您使用的作業系統而定。

## 使用 unixODBC 驅動程式管理員來設定 ODBC 驅動程式
<a name="odbc20-config-unixodbc-linux"></a>

需要下列檔案才能設定 Amazon Redshift ODBC 驅動程式：
+ ` amazon.redshiftodbc.ini `
+ ` odbc.ini `
+ ` odbcinst.ini `

 如果是安裝到預設位置，則 `amazon.redshiftodbc.ini` 組態檔案位於 `/opt/amazon/redshiftodbcx64`。

 此外，在 `/opt/amazon/redshiftodbcx64` 下，您可以找到 `odbc.ini` 和 `odbcinst.ini` 範例檔案。您可以使用這些檔案做為設定 Amazon Redshift ODBC 驅動程式和資料來源名稱 (DSN) 的範例。

 不建議使用 Amazon Redshift ODBC 驅動程式安裝目錄來存放組態檔案。所安裝目錄中的範例檔案僅供當作範例。如果您後來重新安裝 Amazon Redshift ODBC 驅動程式，或升級為更新版本，安裝目錄會遭到覆寫。您會遺失對安裝目錄中的檔案所做的任何變更。

 若要避免這種情況，請將 `amazon.redshiftodbc.ini` 檔案複製到安裝目錄以外的目錄。如果您將此檔案複製到使用者的主目錄，請在檔案名稱開頭加上一點 (.)，將它變成隱藏檔。

 對於 `odbc.ini` 和 `odbcinst.ini` 檔案，請使用位於使用者主目錄中的組態檔案，或在另一個目錄中建立新版本。根據預設，您的 Linux 作業系統應該在使用者的主目錄 (`/home/$USER` 或 `~/.`) 中具有 `odbc.ini` 檔案和 `odbcinst.ini` 檔案。這些預設檔案是隱藏檔，每個檔案名稱前面以點表示。僅當使用 `-a` 旗標來列出目錄內容時，才會顯示這些檔案。

 無論對 `odbc.ini` 和 `odbcinst.ini` 檔案選擇何種選項，都會修改這些檔案來新增驅動程式和 DSN 組態資訊。如果建立新檔案，則還需要設定環境變數來指定這些組態檔案所在的位置。

 根據預設，ODBC 驅動程式管理員會設定為使用隱藏版本的 `odbc.ini` 和 `odbcinst.ini` 組態檔 (命名為 `.odbc.ini` 和 `.odbcinst.ini`)，這些組態檔位於主目錄中。它們也會設定為使用驅動程式安裝目錄中的 `amazon.redshiftodbc.ini` 檔案。如果您將這些組態檔儲存在其他位置，請設定如下所述的環境變數，以便驅動程式管理員可以找到這些檔案。

 如果您使用 unixODBC，請執行以下操作：
+  將 `ODBCINI` 設定為 `odbc.ini` 檔案的完整路徑和檔案名稱。
+  將 `ODBCSYSINI` 設定為包含 `odbcinst.ini` 檔案之目錄的完整路徑。
+  將 `AMAZONREDSHIFTODBCINI` 設定為 `amazon.redshiftodbc.ini` 檔案的完整路徑和檔案名稱。

以下是設定上述值的範例：

```
export ODBCINI=/usr/local/odbc/odbc.ini 
export ODBCSYSINI=/usr/local/odbc 
export AMAZONREDSHIFTODBCINI=/etc/amazon.redshiftodbc.ini
```

## 在 Linux 上使用資料來源名稱 (DSN) 來設定連線
<a name="odbc20-dsn-linux"></a>

在使用資料來源名稱 (DSN) 連線至資料存放區時，請設定 `odbc.ini` 檔案來定義資料來源名稱 (DSN)。在 `odbc.ini` 檔案中設定屬性，以建立 DSN 來指定資料倉庫的連線資訊。

在 Linux 作業系統上使用下列格式：

```
[ODBC Data Sources]
driver_name=dsn_name

[dsn_name]
Driver=path/driver_file
Host=cluster_endpoint
Port=port_number
Database=database_name
locale=locale
```

以下範例示範 Linux 作業系統上使用 64 位元 ODBC 驅動程式的 `odbc.ini` 組態。

```
[ODBC Data Sources]
Amazon_Redshift_x64=Amazon Redshift ODBC Driver (x64)

[Amazon_Redshift_x64]
Driver=/opt/amazon/redshiftodbcx64/librsodbc64.so
Host=examplecluster.abc123xyz789.us-west-2.redshift.amazonaws.com
Port=5932Database=dev
locale=en-US
```

## 在 Linux 上設定不使用 DSN 的連線
<a name="odbc20-no-dsn-linux"></a>

 若要透過沒有 DSN 的連線連接至您的資料存放區，請在 `odbcinst.ini` 檔案中定義驅動程式。然後，在應用程式中提供無 DSN 的連線字串。

在 Linux 作業系統上使用下列格式：

```
[ODBC Drivers]
driver_name=Installed
...
                            
[driver_name]
Description=driver_description
Driver=path/driver_file
    
...
```

以下範例示範 Linux 作業系統上使用 64 位元 ODBC 驅動程式的 `odbcinst.ini` 組態。

```
[ODBC Drivers]
Amazon Redshift ODBC Driver (x64)=Installed

[Amazon Redshift ODBC Driver (x64)]
Description=Amazon Redshift ODBC Driver (64-bit)
Driver=/opt/amazon/redshiftodbcx64/librsodbc64.so
```

# 在 Apple macOS 上使用 Amazon Redshift ODBC 驅動程式
<a name="odbc20-install-config-mac"></a>

您必須在存取 Amazon Redshift 資料倉儲的用戶端電腦上安裝 Amazon Redshift ODBC 驅動程式。對於您安裝驅動程式的每個電腦，下列最低需求如下：
+ 機器上的根存取。
+ Apple macOS 系統需求：
  + 需要 64 位元版本的 Apple macOS 11.7 版或更新版本 （例如 Apple macOS Big Sur、Monterey、Ventura 或更新版本）。Redshift ODBC 驅動程式僅支援 64 位元用戶端應用程式。
  + 150 MB 的可用磁碟空間
  + 驅動程式支援使用 iODBC 3.52.9\$1 或 unixODBC 2.3.7\$1 建置的應用程式。

# 下載並安裝 Amazon Redshift ODBC 驅動器
<a name="odbc20-install-mac"></a>

使用下列程序，在 Apple macOS 下載並安裝 Amazon Redshift ODBC 驅動程式。僅在您執行的第三方應用程式經認證可與 Amazon Redshift 搭配使用，且該應用程式需要特定驅動程式時，才使用不同的驅動程式。

若要下載並安裝 ODBC 驅動程式：

1. 下載下列驅動程式：[64 位元 ODBC 驅動程式 2.1.15.0 版](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.15.0/AmazonRedshiftODBC-64-bit.2.1.15.0.universal.pkg) 

   x86\$164 和 arm64 架構都支援此驅動程式。此驅動程式的名稱是 **Amazon Redshift ODBC 驅動程式 (x64)**。

1. 檢閱 [Amazon Redshift ODBC 驅動程式 2.x 版授權](https://github.com/aws/amazon-redshift-odbc-driver/blob/master/LICENSE)。

1. 按兩下 .pkg 檔案，然後依照精靈中的步驟安裝驅動程式。或者，執行下列命令：

   ```
   sudo installer -pkg PKGFileName -target /
   ```

   將 取代`PKGFileName`為 pkg 套件檔案名稱。例如，下列命令示範安裝 64 位元驅動程式：

   ```
   sudo installer -pkg ./AmazonRedshiftODBC-64-bit.X.X.XX.X.universal.pkg -target /
   ```

# 使用 ODBC 驅動器管理員設定 ODBC 驅動器
<a name="odbc20-config-mac"></a>

在 Mac 上，您可以使用 ODBC 驅動程式管理員來設定 ODBC 連線設定。ODBC 驅動程式管理員使用組態檔案來定義及設定 ODBC 資料來源和驅動程式。您使用的 ODBC 驅動程式管理員視您使用的作業系統而定。

## 使用 iODBC 或 unixODBC 驅動程式管理員設定 ODBC 驅動程式
<a name="odbc20-config-iodbc-mac"></a>

需要下列檔案才能設定 Amazon Redshift ODBC 驅動程式：
+ ` amazon.redshiftodbc.ini `
+ ` odbc.ini `
+ ` odbcinst.ini `

 如果是安裝到預設位置，則 `amazon.redshiftodbc.ini` 組態檔案位於 `/opt/amazon/redshiftodbcx64`。

 此外，在 `/opt/amazon/redshiftodbcx64` 下，您可以找到 `odbc.ini` 和 `odbcinst.ini` 範例檔案。您可以使用這些檔案做為設定 Amazon Redshift ODBC 驅動程式和資料來源名稱 (DSN) 的範例。所安裝目錄中的範例檔案僅供當作範例。

 不建議使用 Amazon Redshift ODBC 驅動程式安裝目錄來存放組態檔案。如果您後來重新安裝 Amazon Redshift ODBC 驅動程式，或升級為更新版本，安裝目錄會遭到覆寫。您會遺失對安裝目錄中的檔案所做的任何變更。

 若要避免這種情況，請將 `odbc.ini``odbcinst.ini`和 `amazon.redshiftodbc.ini` 檔案複製到安裝目錄以外的目錄。如果您將這些檔案複製到使用者的主目錄，請在這些檔案名稱的開頭新增句點 (.)，使其成為隱藏檔案。

 修改檔案以新增 DSN 組態資訊。建立新檔案時，您也需要設定環境變數，以指定這些組態檔案的位置。

以下是設定環境變數的範例：

```
export ODBCINI=/Library/ODBC/odbc.ini
export ODBCSYSINI=/Library/ODBC
export ODBCINSTINI=${ODBCSYSINI}/odbcinst.ini
```

對於命令列應用程式：將匯出命令新增至 shell 啟動檔案 （例如 `~/.bash_profile`或 `~/.zshrc`)。

如需驅動程式管理員的支援版本，請參閱[此處](https://docs.aws.amazon.com/redshift/latest/mgmt/odbc20-install-config-mac.html) 

### 在 Apple macOS 上使用資料來源名稱 (DSN) 設定連線
<a name="odbc20-dsn-mac"></a>

在使用資料來源名稱 (DSN) 連線至資料存放區時，請設定 `odbc.ini` 檔案來定義資料來源名稱 (DSN)。設定 `odbc.ini` 檔案中的屬性以建立 DSN，指定 Redshift 資料倉儲的連線資訊。

在 Apple macOS 上，使用下列格式：

```
[ODBC Data Sources]
driver_name=dsn_name

[dsn_name]
Driver=path/driver_file
Host=cluster_endpoint
Port=port_number
Database=database_name
locale=locale
```

下列範例顯示 Apple macOS 上`odbc.ini`具有 64 位元 ODBC 驅動程式的 組態。

```
[ODBC Data Sources]
Amazon_Redshift_x64=Amazon Redshift ODBC Driver (x64)

[Amazon_Redshift_x64]
Driver=/opt/amazon/redshiftodbcx64/librsodbc64.dylib
Host=examplecluster.abc123xyz789.us-west-2.redshift.amazonaws.com
Port=5932
Database=dev
locale=en-US
```

### 在 Apple macOS 上設定沒有 DSN 的連線
<a name="odbc20-no-dsn-mac"></a>

 若要透過沒有 DSN 的連線連線至 Redshift 資料倉儲，請在 `odbcinst.ini` 檔案中定義驅動程式。然後，在應用程式中提供無 DSN 的連線字串。

在 Apple macOS 上，使用下列格式：

```
[ODBC Drivers]
driver_name=Installed
...
                            
[driver_name]
Description=driver_description
Driver=path/driver_file
    
...
```

下列範例顯示 Apple macOS 上`odbcinst.ini`具有 64 位元 ODBC 驅動程式的 組態。

```
[ODBC Drivers]
Amazon Redshift ODBC Driver (x64)=Installed

[Amazon Redshift ODBC Driver (x64)]
Description=Amazon Redshift ODBC Driver (64-bit)
Driver=/opt/amazon/redshiftodbcx64/librsodbc64.dylib
```

# 身分驗證方法
<a name="odbc20-authentication-ssl"></a>

為了防止有人未經授權就存取資料，Amazon Redshift 資料存放區會要求所有連線使用使用者憑證進行身分驗證。

下表說明可用來連線至 Amazon Redshift ODBC 驅動程式 2.x 版之每種身分驗證方法的必要和選用連線選項：


| 身分驗證方法 | 必要 | 選用 | 
| --- | --- | --- | 
|  標準  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/redshift/latest/mgmt/odbc20-authentication-ssl.html)  |   | 
|  IAM 設定檔  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/redshift/latest/mgmt/odbc20-authentication-ssl.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/redshift/latest/mgmt/odbc20-authentication-ssl.html)   如果 **ClusterID** 和 **Region** 未單獨設定，則必須在 **Host** 中加以設定。   | 
|  IAM 登入資料  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/redshift/latest/mgmt/odbc20-authentication-ssl.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/redshift/latest/mgmt/odbc20-authentication-ssl.html)   如果 **ClusterID** 和 **Region** 未單獨設定，則必須在 **Host** 中加以設定。   | 
|  AD FS  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/redshift/latest/mgmt/odbc20-authentication-ssl.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/redshift/latest/mgmt/odbc20-authentication-ssl.html)   如果 **ClusterID** 和 **Region** 未單獨設定，則必須在 **Host** 中加以設定。   | 
|  Azure AD  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/redshift/latest/mgmt/odbc20-authentication-ssl.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/redshift/latest/mgmt/odbc20-authentication-ssl.html)   如果 **ClusterID** 和 **Region** 未單獨設定，則必須在 **Host** 中加以設定。   | 
|  JWT  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/redshift/latest/mgmt/odbc20-authentication-ssl.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/redshift/latest/mgmt/odbc20-authentication-ssl.html)  | 
|  Okta  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/redshift/latest/mgmt/odbc20-authentication-ssl.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/redshift/latest/mgmt/odbc20-authentication-ssl.html)   如果 **ClusterID** 和 **Region** 未單獨設定，則必須在 **Host** 中加以設定。   | 
|  Ping Federate  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/redshift/latest/mgmt/odbc20-authentication-ssl.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/redshift/latest/mgmt/odbc20-authentication-ssl.html)   如果 **ClusterID** 和 **Region** 未單獨設定，則必須在 **Host** 中加以設定。   | 
|  瀏覽器 Azure AD  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/redshift/latest/mgmt/odbc20-authentication-ssl.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/redshift/latest/mgmt/odbc20-authentication-ssl.html)   如果 **ClusterID** 和 **Region** 未單獨設定，則必須在 **Host** 中加以設定。   | 
|  瀏覽器 SAML  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/redshift/latest/mgmt/odbc20-authentication-ssl.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/redshift/latest/mgmt/odbc20-authentication-ssl.html)   如果 **ClusterID** 和 **Region** 未單獨設定，則必須在 **Host** 中加以設定。   | 
|  Auth Profile  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/redshift/latest/mgmt/odbc20-authentication-ssl.html)  |   | 
|  瀏覽器 Azure AD OAUTH2  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/redshift/latest/mgmt/odbc20-authentication-ssl.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/redshift/latest/mgmt/odbc20-authentication-ssl.html)   如果 **ClusterID** 和 **Region** 未單獨設定，則必須在 **Host** 中加以設定。   | 
|  AWS IAM Identity Center  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/redshift/latest/mgmt/odbc20-authentication-ssl.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/redshift/latest/mgmt/odbc20-authentication-ssl.html)  | 

## 使用外部憑證服務
<a name="odbc20-authentication-external"></a>

除了內建支援 AD FS、Azure AD 和 Okta 外，Windows 版本的 Amazon Redshift ODBC 驅動程式也支援其他憑證服務。驅動程式可以使用您選擇的任何 SAML 型憑證提供者外掛程式來驗證連線。

若要在 Windows 上設定外部憑證服務：

1. 建立會指定憑證提供者外掛程式和視需要指定其他身分驗證參數的 IAM 設定檔。設定檔必須採用 ASCII 編碼，且必須包含下列鍵值組，其中 `PluginPath` 是外掛程式應用程式的完整路徑：

   ```
   plugin_name = PluginPath
   ```

   例如：

   ```
   plugin_name = C:\Users\kjson\myapp\CredServiceApp.exe 
   ```

   如需有關如何建立設定檔的資訊，請參閱《Amazon Redshift 叢集管理指南》中的[使用組態設定檔](https://docs.aws.amazon.com/redshift/latest/mgmt/options-for-providing-iam-credentials.html#using-configuration-profile)。

1. 將驅動程式設定為使用此設定檔。驅動程式會偵測並使用設定檔中指定的驗證設定。

# 資料類型轉換
<a name="odbc20-converting-data-types"></a>

Amazon Redshift ODBC 驅動程式 2.x 版支援許多常見的資料格式，可在 Amazon Redshift 和 SQL 資料類型之間進行轉換。

下表列出支援的資料類型映射。


| Amazon Redshift 類型 | SQL 類型 | 
| --- | --- | 
|  BIGINT  |  SQL\$1BIGINT  | 
|  BOOLEAN  |  SQL\$1BIT  | 
|  CHAR  |  SQL\$1CHAR  | 
|  DATE  |  SQL\$1TYPE\$1DATE  | 
|  DECIMAL  |  SQL\$1NUMERIC  | 
|  DOUBLE PRECISION  |  SQL\$1DOUBLE  | 
|  GEOGRAPHY  |  SQL\$1 LONGVARBINARY  | 
|  GEOMETRY  |  SQL\$1 LONGVARBINARY  | 
|  INTEGER  |  SQL\$1INTEGER  | 
|  REAL  |  SQL\$1REAL  | 
|  SMALLINT  |  SQL\$1SMALLINT  | 
|  SUPER  |  SQL\$1LONGVARCHAR  | 
|  TEXT  |  SQL\$1LONGVARCHAR  | 
|  TIME  |  SQL\$1TYPE\$1TIME  | 
|  TIMETZ  |  SQL\$1TYPE\$1TIME  | 
|  TIMESTAMP  |  SQL\$1TYPE\$1 TIMESTAMP  | 
|  TIMESTAMPTZ  |  SQL\$1TYPE\$1 TIMESTAMP  | 
|  VARBYTE  |  SQL\$1LONGVARBINARY  | 
|  VARCHAR  |  SQL\$1VARCHAR  | 

# ODBC 驅動器選項
<a name="odbc20-configuration-options"></a>

您可以使用驅動程式組態選項來控制 Amazon Redshift ODBC 驅動程式的行為。驅動程式選項不區分大小寫。

在 Microsoft Windows 中，您通常於設定資料來源名稱 (DSN) 時設定驅動程式選項。您也可以在連接時以程式設計方式在連線字串中設定驅動程式選項，或在 `HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI\your_DSN` 中新增或變更登錄機碼。

在 Linux 中，您可以在 `odbc.ini` 和 `amazon.redshiftodbc.ini` 檔案中設定驅動器組態選項。在 `amazon.redshiftodbc.ini` 檔案中設定的組態選項會套用至所有連線。相反地，`odbc.ini` 檔案中設定的組態選項是針對某個連線。`odbc.ini` 中設定的組態選項優先於 `amazon.redshiftodbc.ini` 中設定的組態選項。

以下是您可以為 Amazon Redshift ODBC 2.x 版驅動程式指定之選項的描述。

## AccessKeyID
<a name="odbc20-accesskeyid-option"></a>
+ **預設值** — 無
+ **資料類型** — 字串

 使用者或角色的 IAM 存取金鑰。如果設定此參數，則也必須指定 **SecretAccessKey**。

此為選用參數。

## app\$1id
<a name="odbc20-app-id-option"></a>
+ **預設值** — 無
+ **資料類型** — 字串

與您的 Amazon Redshift 應用程式相關聯、Okta 所提供的唯一 ID。

此為選用參數。

## ApplicationName
<a name="odbc20-application_name-option"></a>
+ **預設值** — 無
+ **資料類型** — 字串

要傳遞至 Amazon Redshift 以進行稽核的用戶端應用程式名稱。您提供的應用程式名稱會出現在 [SYS\$1CONNECTION\$1LOG](https://docs.aws.amazon.com/redshift/latest/dg/SYS_CONNECTION_LOG.html) 資料表的 'application\$1name' 欄中。此名稱有助於在偵錯問題時，追蹤連線來源並進行故障診斷。

此為選用參數。

## app\$1name
<a name="odbc20-app-name-option"></a>
+ **預設值** — 無
+ **資料類型** — 字串

您用來驗證與 Amazon Redshift 之連線的 Okta 應用程式名稱。

此為選用參數。

## AuthProfile
<a name="odbc20-authprofile-option"></a>
+ **預設值** — 無
+ **資料類型** — 字串

用來管理連線設定的身分驗證設定檔。如果設定此參數，則也必須指定 **AccessKeyID** 和 **SecretAccessKey**。

此為選用參數。

## AuthType
<a name="odbc20-authtype-option"></a>
+ **預設值** — 標準
+ **資料類型** — 字串

此選項指定當您使用 [Amazon Redshift ODBC 驅動程式 DSN 設定] 對話方塊設定 DSN 時，驅動程式會使用的身分驗證模式：
+  標準：使用 Amazon Redshift 使用者名稱和密碼的標準身分驗證。
+  AWS 設定檔：使用設定檔進行 IAM 身分驗證。
+  AWS IAM 登入資料：使用 IAM 登入資料的 IAM 身分驗證。
+  身分提供者：AD FS：使用 Active Directory Federation Services (AD FS) 進行 IAM 身分驗證。
+  Identity Provider：Auth Plugin：從任何連結至 AWS IAM Identity Center 的 Web Identity Provider 接受 IAM Identity Center 權杖或 OpenID Connect (OIDC) JSON 型身分權杖 (JWT) AWS 的授權外掛程式。
+  身分提供者：Azure AD：使用 Azure AD 入口網站進行 IAM 身分驗證。
+  身分提供者：JWT：使用 JSON Web 權杖 (JWT) 進行 IAM 身分驗證。
+  身分提供者：Okta：使用 Okta 進行 IAM 身分驗證。
+  身分提供者：PingFederate：使用 PingFederate 進行 IAM 身分驗證。

只有當您使用 Windows 驅動程式中的 [Amazon Redshift ODBC 驅動程式 DSN 設定] 對話方塊設定 DSN 時，才能使用此選項。當您使用連線字串或非 Windows 機器設定連線時，驅動程式會根據您指定的登入資料，自動判斷要使用標準、 AWS 設定檔或 AWS IAM 登入資料身分驗證。若要使用身分提供者，您必須設定 **plugin\$1name** 屬性。

此為必要參數。

## AutoCreate
<a name="odbc20-autocreate-option"></a>
+ **預設值** — 0
+ **資料類型** — 布林值

指定當所指定的使用者不存在時，驅動程式是否會建立新使用者的布林值。
+  1 \$1 TRUE：如果透過 **UID** 指定的使用者不存在，驅動程式會建立新使用者。
+  0 \$1 FALSE：驅動程式不會建立新使用者。如果指定的使用者不存在，則身分驗證會失敗。

此為選用參數。

## CaFile
<a name="odbc20-cafile-option"></a>
+ **預設值** — 無
+ **資料類型** — 字串

用於某些 IAM 身分驗證形式之 CA 憑證檔案的檔案路徑。

 這個參數只能在 Linux 上使用。

此為選用參數。

## client\$1id
<a name="odbc20-client-id-option"></a>
+ **預設值** — 無
+ **資料類型** — 字串

與 Azure AD 中 Amazon Redshift 應用程式相關聯的用戶端 ID。

如果透過 Azure AD 服務進行驗證，則需要此參數。

## client\$1 secret
<a name="odbc20-client-secret-option"></a>
+ **預設值** — 無
+ **資料類型** — 字串

 與 Azure AD 中 Amazon Redshift 應用程式相關聯的私密金鑰。

如果透過 Azure AD 服務進行驗證，則需要此參數。

## ClusterId
<a name="odbc20-clusterid-option"></a>
+ **預設值** — 無
+ **資料類型** — 字串

您想要連線到之 Amazon Redshift 叢集的名稱。其會用於 IAM 身分驗證。**伺服器**參數中不會指定叢集 ID。

此為選用參數。

## 壓縮
<a name="odbc20-compression-option"></a>
+ **預設值** - off
+ **資料類型** — 字串

用於 Amazon Redshift 伺服器與用戶端或驅動程式之間的有線通訊協定通訊的壓縮方法。

您可以指定下列值：
+ lz4：將用於與 Amazon Redshift 進行有線通訊協定通訊的壓縮方法設定為 `lz4`。
+ zstd：將用於與 Amazon Redshift 進行有線通訊協定通訊的壓縮方法設定為 `zstd`。
+  off：不要對與 Amazon Redshift 進行的有線通訊協定通訊使用壓縮。

此為選用參數。

## 資料庫
<a name="odbc20-database-option"></a>
+ **預設值** — 無
+ **資料類型** — 字串

您想要存取之 Amazon Redshift 資料庫的名稱。

此為必要參數。

## DatabaseMetadataCurrentDbOnly
<a name="odbc20-database-metadata-option"></a>
+ **預設值** — 1
+ **資料類型** — 布林值

指定驅動程式是否會從多個資料庫和叢集傳回中繼資料的布林值。
+ 1 \$1 TRUE：驅動程式只會從目前的資料庫傳回中繼資料。
+  0 \$1 FALSE。驅動程式會傳回多個 Amazon Redshift 資料庫和叢集的中繼資料。

此為選用參數。

## dbgroups\$1filter
<a name="odbc20-dbgroups-filter-option"></a>
+ **預設值** — 無
+ **資料類型** — 字串

當您使用 Azure、瀏覽器 Azure 和瀏覽器 SAML 身分驗證類型時，可指定來篩選出從 Amazon Redshift 的 SAML 回應收到之 DbGroups 的規則運算式。

此為選用參數。

## 驅動程式
<a name="odbc20-driver-option"></a>
+ **預設值** — Amazon Redshift ODBC 驅動程式 (x64)
+ **資料類型** — 字串

驅動程式的名稱。唯一支援的值是 **Amazon Redshift ODBC 驅動程式 (x64)**。

如果您未設定 **DSN**，則需要此參數。

## DSN
<a name="odbc20-dsn-option"></a>
+ **預設值** — 無
+ **資料類型** — 字串

驅動程式資料來源名稱的名稱。應用程式會在 SQLDriverConnect API 中指定 DSN。

如果您未設定**驅動程式**，則需要此參數。

## EndpointUrl
<a name="odbc20-endpointurl-option"></a>
+ **預設值** — 無
+ **資料類型** — 字串

用來與 Amazon Redshift Coral Service 通訊以進行 IAM 身分驗證的覆寫端點。

此為選用參數。

## ForceLowercase
<a name="odbc20-forcelowercase-option"></a>
+ **預設值** — 0
+ **資料類型** — 布林值

指定在使用單一登入身分驗證時，驅動程式是否會將從身分提供者傳送至 Amazon Redshift 的所有 DbGroups 轉換為小寫的布林值。
+  1 \$1 TRUE：驅動程式會將從身分提供者傳送的所有 DbGroups 轉換為小寫。
+  0 \$1 FALSE：驅動程式不會改變 DbGroups。

此為選用參數。

## group\$1federation
<a name="odbc20-group-federation-option"></a>
+ **預設值** — 0
+ **資料類型** — 布林值

此布林值指定是否在佈建叢集中使用 `getClusterCredentialsWithIAM` API 取得臨時叢集憑證。此選項可讓 IAM 使用者與佈建叢集中的 Redshift 資料庫角色整合。請注意，此選項不適用於 Redshift Serverless 命名空間。
+  1 \$1 TRUE：驅動器使用 `getClusterCredentialsWithIAM` API 在佈建叢集中取得臨時叢集憑證。
+  0 \$1 FALSE：驅動器使用預設 `getClusterCredentials` API 在佈建叢集中取得臨時叢集憑證。

此為選用參數。

## https\$1proxy\$1host
<a name="odbc20-https-proxy-host-option"></a>
+ **預設值** — 無
+ **資料類型** — 字串

您想要透過其通過 IAM 身分驗證程序之代理伺服器的主機名稱或 IP 地址。

此為選用參數。

## https\$1proxy\$1password
<a name="odbc20-https-proxy-password-option"></a>
+ **預設值** — 無
+ **資料類型** — 字串

您用來存取代理伺服器的密碼。其會用於 IAM 身分驗證。

此為選用參數。

## https\$1proxy\$1port
<a name="odbc20-https-proxy-port-option"></a>
+ **預設值** — 無
+ **資料類型** — 整數

代理伺服器用來接聽用戶端連線的連接埠號碼。其會用於 IAM 身分驗證。

此為選用參數。

## https\$1proxy\$1username
<a name="odbc20-https-proxy-username-option"></a>
+ **預設值** — 無
+ **資料類型** — 字串

您用來存取代理伺服器的使用者名稱。其會用於 IAM 身分驗證。

此為選用參數。

## IAM
<a name="odbc20-iam-option"></a>
+ **預設值** — 0
+ **資料類型** — 布林值

指定驅動程式是否會使用 IAM 身分驗證方法來驗證連線的布林值。
+  1 \$1 TRUE：驅動程式會使用其中一種 IAM 身分驗證方法 (使用存取金鑰和私密金鑰組、或設定檔或憑證服務)。
+  0 \$1 FALSE。驅動程式會使用標準身分驗證 (使用資料庫使用者名稱和密碼)。

此為選用參數。

## idc\$1client\$1display\$1name
<a name="odbc20-idc_client_display_name-option"></a>
+ **預設值** - Amazon Redshift ODBC 驅動器
+ **資料類型** — 字串

使用 BrowserIdcAuthPlugin 的用戶端要使用的顯示名稱。

此為選用參數。

## idc\$1region
<a name="odbc20-idc_region"></a>
+ **預設值** — 無
+ **資料類型** — 字串

IAM Identity Center AWS 執行個體所在的 AWS 區域。

只有在 plugin\$1name 組態選項中使用 `BrowserIdcAuthPlugin` 進行身分驗證時，才需要此參數。

## idp\$1host
<a name="odbc20-idp-host-option"></a>
+ **預設值** — 無
+ **資料類型** — 字串

您用來對 Amazon Redshift 進行身分驗證的 IdP (身分提供者) 主機。

此為選用參數。

## idp\$1port
<a name="odbc20-idp-port-option"></a>
+ **預設值** — 無
+ **資料類型** — 整數

您用來對 Amazon Redshift 進行身分驗證的 IdP (身分提供者) 連接埠。根據您在建立、修改或遷移叢集時所選取的連接埠而定，允許存取選取的連接埠。

此為選用參數。

## idp\$1response\$1timeout
<a name="odbc20-idp-response-timeout-option"></a>
+ **預設值** — 120
+ **資料類型** — 整數

透過瀏覽器外掛程式使用 SAML 或 Azure AD 服務時，驅動程式等待身分提供者所傳 SAML 回應的秒數。

此為選用參數。

## idp\$1tenant
<a name="odbc20-idp-tenant-option"></a>
+ **預設值** — 無
+ **資料類型** — 字串

 與 Amazon Redshift 應用程式相關聯的 Azure AD 租用戶 ID。

如果透過 Azure AD 服務進行驗證，則需要此參數。

## idp\$1partition
<a name="odbc20-idp-partition-option"></a>
+ **預設值** — 無
+ **資料類型** — 字串

指定設定身分提供者 (IdP) 的雲端分割區。這會決定驅動程式連線到哪個 IdP 身分驗證端點。

如果此參數保留空白，驅動程式會預設為商業分割區。可能值為：
+ `us-gov`：如果您的 IdP 是在 Azure Government 中設定，請使用此值。例如，Azure AD Government 會使用端點 `login.microsoftonline.us`。
+ `cn`：如果您的 IdP 是在中國雲端分割區中設定，請使用此值。例如，Azure AD 中國使用端點 `login.chinacloudapi.cn`。

此為選用參數。

## idp\$1use\$1https\$1proxy
<a name="odbc20-idp-use-https-proxy-option"></a>
+ **預設值** — 0
+ **資料類型** — 布林值

指定驅動程式是否會透過代理伺服器來通過身分提供者 (IdP) 身分驗證程序的布林值。
+  1 \$1 TRUE：驅動程式會透過代理伺服器來通過 IdP 身分驗證程序。
+  0 \$1 FALSE。驅動程式不會透過代理伺服器來通過 IdP 身分驗證程序。

此為選用參數。

## InstanceProfile
<a name="odbc20-instanceprofile-option"></a>
+ **預設值** — 0
+ **資料類型** — 布林值

指定驅動程式在設定為使用設定檔進行身分驗證時，是否會使用 Amazon EC2 執行個體設定檔的布林值。
+  1 \$1 TRUE：驅動程式會使用 Amazon EC2 執行個體設定檔。
+  0 \$1 FALSE。驅動程式會改用 [設定檔名稱] 選項 (**設定檔**) 所指定的鏈結角色設定檔。

此為選用參數。

## issuer\$1url
<a name="odbc20-issuer_url"></a>
+ **預設值** — 無
+ **資料類型** — 字串

 指向 AWS IAM Identity Center 伺服器的執行個體端點。

只有在 plugin\$1name 組態選項中使用 `BrowserIdcAuthPlugin` 進行身分驗證時，才需要此參數。

## KeepAlive
<a name="odbc20-keepalive-option"></a>
+ **預設值** — 1
+ **資料類型** — 布林值

指定驅動程式是否會使用 TCP 保持連線來防止連線逾時的布林值。
+  1 \$1 TRUE：驅動程式會使用 TCP 保持連線來防止連線逾時。
+  0 \$1 FALSE。驅動程式不會使用 TCP 保持連線。

此為選用參數。

## KeepAliveCount
<a name="odbc20-keepalivecount-option"></a>
+ **預設值** — 0
+ **資料類型** — 整數

在認為連線已中斷之前可遺失的 TCP 保持連線封包數。此參數設為 0 時，驅動程式會使用此設定的系統預設值。

此為選用參數。

## KeepAliveInterval
<a name="odbc20-keepaliveinterval-option"></a>
+ **預設值** — 0
+ **資料類型** — 整數

每一次 TCP 保持連線重新傳輸之間的秒數。此參數設為 0 時，驅動程式會使用此設定的系統預設值。

此為選用參數。

## KeepAliveTime
<a name="odbc20-keepalivetime-option"></a>
+ **預設值** — 0
+ **資料類型** — 整數

驅動程式傳送 TCP 保持連線封包之前的閒置秒數。此參數設為 0 時，驅動程式會使用此設定的系統預設值。

此為選用參數。

## listen\$1port
<a name="odbc20-listen-port-option"></a>
+ **預設值** — 7890
+ **資料類型** — 整數

透過瀏覽器外掛程式使用 SAML、Azure AD 或 IAM Identity Center AWS 服務時，驅動程式用來從身分提供者或授權碼接收 SAML 回應的連接埠。

此為選用參數。

## login\$1url
<a name="odbc20-login-url-option"></a>
+ **預設值** — 無
+ **資料類型** — 字串

使用一般瀏覽器 SAML 外掛程式時，身分提供者網站上資源的 URL。

如果透過瀏覽器外掛程式向 SAML 或 Azure AD 服務進行驗證，則需要此參數。

## loginToRp
<a name="odbc20-logintorp-option"></a>
+ **預設值** — urn:amazon:webservices
+ **資料類型** — 字串

您要用於 AD FS 身分驗證類型的依賴方信任。

此為選用字串。

## LogLevel
<a name="odbc20-loglevel-option"></a>
+ **預設值** — 0
+ **資料類型** — 整數

使用此屬性可在驅動程式中啟用或停用日誌記錄，以及指定日誌檔案中包含的詳細資訊數量。日誌記錄建議只啟用到足以擷取到問題就好，因為日誌記錄會降低效能，而且可能會耗用大量磁碟空間。

 將此屬性設為以下其中一個值：
+  0：OFF。停用所有日誌記錄功能。
+  1：ERROR。記錄可能允許驅動程式繼續執行但會產生錯誤的錯誤事件。
+  2：API\$1CALL。記錄 ODBC API 函數呼叫與函數引數值。
+  3：INFO。記錄用於描述驅動程式進展的一般資訊。
+  4：MSG\$1PROTOCOL。記錄驅動程式的訊息通訊協定詳細資訊。
+  5：DEBUG。記錄所有驅動程式活動。
+  6：DEBUG\$1APPEND。持續附加所有驅動程式活動的日誌。

在啟用日誌記錄功能時，驅動程式會在您於 **LogPath** 屬性中指定的位置產生下列日誌檔案：
+  記錄在連線交握期間發生之驅動程式活動的 `redshift_odbc.log.1` 檔案。
+  在與資料庫建立連線後所有驅動程式活動的 `redshift_odbc.log` 檔案。

此為選用參數。

## LogPath
<a name="odbc20-logpath-option"></a>
+ **預設值** — 作業系統特定的 TEMP 目錄
+ **資料類型** — 字串

**LogLevel** 大於 0 時，驅動程式用來儲存日誌檔案之資料夾的完整路徑。

此為選用參數。

## Min\$1TLS
<a name="odbc20-min-tls-option"></a>
+ **預設值** – 1.2
+ **資料類型** — 字串

 驅動程式允許資料存放區用於加密連線的 TLS/SSL 最低版本。例如，如果指定 TLS 1.2，則無法使用 TLS 1.1 來加密連線。

Min\$1TLS 接受以下值：
+  1.0：連線必須至少使用 TLS 1.0。
+  1.1：連線必須至少使用 TLS 1.1。
+  1.2：連線至少必須使用 TLS 1.2。

此為選用參數。

## partner\$1spid
<a name="odbc20-partner-spid-option"></a>
+ **預設值** — 無
+ **資料類型** — 字串

使用 PingFederate 服務驗證連線時，要使用的合作夥伴 SPID (服務提供者 ID) 值。

此為選用參數。

## Password \$1 PWS
<a name="odbc20-password-option"></a>
+ **預設值** — 無
+ **資料類型** — 字串

與您在 [使用者] 欄位 (**UID** \$1 **User** \$1 **LogonID**) 中所提供資料庫使用者名稱對應的密碼。

此為選用參數。

## plugin\$1name
<a name="odbc20-plugin-name-option"></a>
+ **預設值** — 無
+ **資料類型** — 字串

您想要用於身分驗證的憑證提供者外掛程式名稱。

 支援下列值：
+  `ADFS`：使用 Active Directory Federation Services 進行身分驗證。
+  `AzureAD`：使用 Microsoft Azure Active Directory (AD) Service 進行身分驗證。
+  `BrowserAzureAD`：使用 Microsoft Azure Active Directory (AD) Service 的瀏覽器外掛程式進行身分驗證。
+  `BrowserIdcAuthPlugin `：使用 AWS IAM Identity Center 的授權外掛程式。
+  `BrowserSAML`：使用 SAML 服務 (例如 Okta 或 Ping) 的瀏覽器外掛程式進行身分驗證。
+  `IdpTokenAuthPlugin`：從連結至 AWS IAM Identity Center 的任何 Web 身分提供者接受 IAM Identity Center 字符或 OpenID Connect (OIDC) JSON 型身分字符 (JWT) AWS 的授權外掛程式。
+  `JWT`：使用 JSON Web 權杖 (JWT) 進行身分驗證。
+  `Ping`：使用 PingFederate 服務進行身分驗證。
+  `Okta`：使用 Okta 服務進行身分驗證。

此為選用參數。

## Port \$1 PortNumber
<a name="odbc20-port-option"></a>
+ **預設值** — 5439
+ **資料類型** — 整數

Amazon Redshift 伺服器用來接聽用戶端連線的 TCP 連接埠號碼。

此為選用參數。

## preferred\$1role
<a name="odbc20-preferred-role-option"></a>
+ **預設值** — 無
+ **資料類型** — 字串

您要在連線到 Amazon Redshift 期間擔任的角色。其會用於 IAM 身分驗證。

此為選用參數。

## 設定檔
<a name="odbc20-profile-option"></a>
+ **預設值** — 無
+ **資料類型** — 字串

用於向 Amazon Redshift 驗證的使用者 AWS 設定檔名稱。
+  如果 Use Instance Profile 參數 (**InstanceProfile** 屬性) 設為 1 \$1 TRUE，則該設定會優先，而且驅動程式會改用 Amazon EC2 執行個體設定檔。
+  包含設定檔之憑證檔案的預設位置為 `~/.aws/Credentials`。可使用 `AWS_SHARED_CREDENTIALS_FILE` 環境變數以指向不同的憑證檔案。

此為選用參數。

## provider\$1name
<a name="odbc20-provider-name-option"></a>
+ **預設值** — 無
+ **資料類型** — 字串

使用者使用 CREATE IDENTITY PROVIDER 查詢所建立的身分驗證提供者。其會用於原生 Amazon Redshift 身分驗證。

此為選用參數。

## ProxyHost
<a name="odbc20-proxyhost-option"></a>
+ **預設值** — 無
+ **資料類型** — 字串

您想要透過其進行連線之代理伺服器的主機名稱或 IP 地址。

此為選用參數。

## ProxyPort
<a name="odbc20-proxyport-option"></a>
+ **預設值** — 無
+ **資料類型** — 整數

代理伺服器用來接聽用戶端連線的連接埠號碼。

此為選用參數。

## ProxyPwd
<a name="odbc20-proxypwd-option"></a>
+ **預設 ValPrevious ODBC 驅動程式版本ue** – 無
+ **資料類型** — 字串

您用來存取代理伺服器的密碼。

此為選用參數。

## ProxyUid
<a name="odbc20-proxyuid-option"></a>
+ **預設值** — 無
+ **資料類型** — 字串

您用來存取代理伺服器的使用者名稱。

此為選用參數。

## ReadOnly
<a name="odbc20-readonly-option"></a>
+ **預設值** — 0
+ **資料類型** — 布林值

指定驅動程式是否處於唯讀模式的布林值。
+  1 \$1 TRUE：連線處於唯讀模式，無法寫入到資料存放區。
+  0 \$1 FALSE：連接不處於唯讀模式，可以寫入到資料存放區。

此為選用參數。

## region
<a name="odbc20-region-option"></a>
+ **預設值** — 無
+ **資料類型** — 字串

叢集所在的 AWS 區域。

此為選用參數。

## SecretAccessKey
<a name="odbc20-secretaccesskey-option"></a>
+ **預設值** — 無
+ **資料類型** — 字串

 使用者或角色的 IAM 私密金鑰。如果設定此參數，則也必須指定 **AccessKeyID**。

此為選用參數。

## SessionToken
<a name="odbc20-sessiontoken-option"></a>
+ **預設值** — 無
+ **資料類型** — 字串

 與您用來驗證的 IAM 角色相關聯的臨時 IAM 工作階段權杖。

此為選用參數。

## Server \$1 HostName \$1 Host
<a name="odbc20-server-option"></a>
+ **預設值** — 無
+ **資料類型** — 字串

要連線到的端點伺服器。

此為必要參數。

## ssl\$1insecure
<a name="odbc20-ssl-insecure-option"></a>
+ **預設值** — 0
+ **資料類型** — 布林值

指定驅動程式是否會檢查 IdP 伺服器憑證真確性的布林值。
+  1 \$1 TRUE：驅動程式不會檢查 IdP 伺服器憑證的真確性。
+  0 \$1 FALSE：驅動程式會檢查 IdP 伺服器憑證的真確性。

此為選用參數。

## SSLMode
<a name="odbc20-sslmode-option"></a>
+ **預設值** — `verify-ca`
+ **資料類型** — 字串

連線到 Amazon Redshift 時要使用的 SSL 憑證驗證模式。可能的值如下：
+  `verify-full`：僅使用 SSL、受信任的憑證授權機構和符合憑證的伺服器名稱進行連線。
+  `verify-ca`：僅使用 SSL 和受信任的憑證授權機構進行連線。
+  `require`：僅使用 SSL 進行連線。
+  `prefer`：使用 SSL (如果可用) 進行連線。否則，以不使用 SSL 的方式進行連線。
+  `allow`：預設會以不使用 SSL 的方式進行連線。如果伺服器需要 SSL 連線，則使用 SSL。
+  `disable`：以不使用 SSL 的方式進行連線。

此為選用參數。

## StsConnectionTimeout
<a name="odbc20-stsconnectiontimeout-option"></a>
+ **預設值** — 0
+ **資料類型** — 整數

IAM 連線的等待時間上限 (以秒為單位)。如果設定為 0 或未指定，驅動程式會等待每次 AWS STS 呼叫 60 秒。

此為選用參數。

## StsEndpointUrl
<a name="odbc20-stsendpointurl-option"></a>
+ **預設值** — 無
+ **資料類型** — 字串

此選項會指定用來與 AWS Security Token Service (AWS STS) 進行通訊的覆寫端點。

此為選用參數。

## token
<a name="jdbc20-token-option"></a>
+ **預設值** — 無
+ **資料類型** — 字串

IAM Identity Center AWS 提供存取字符或由與 IAM Identity Center 連結的 Web 身分提供者提供的 OpenID Connect (OIDC) JSON Web Token AWS (JWT)。您的應用程式必須透過使用 IAM Identity Center AWS 或與 IAM AWS Identity Center 連結的身分提供者驗證應用程式的使用者來產生此字符。

此參數適用於 `IdpTokenAuthPlugin`。

## token\$1type
<a name="jdbc20-token-type-option"></a>
+ **預設值** — 無
+ **資料類型** — 字串

`IdpTokenAuthPlugin` 中使用的權仗類型。

您可以指定下列值：

**ACCESS\$1TOKEN**  
如果您使用 AWS IAM Identity Center 提供的存取權杖，請輸入此選項。

**EXT\$1JWT**  
如果您使用與 AWS IAM Identity Center 整合的 Web 型身分提供者所提供的 OpenID Connect (OIDC) JSON Web Token (JWT)，請輸入此項。

此參數適用於 `IdpTokenAuthPlugin`。

## UID \$1 User \$1 LogonID
<a name="odbc20-uid-option"></a>
+ **預設值** — 無
+ **資料類型** — 字串

您用來存取 Amazon Redshift 伺服器的使用者名稱。

若您使用資料庫身分驗證，則此為必要參數。

## UseUnicode
<a name="odbc20-useunicode-option"></a>
+ **預設值** — 0
+ **資料類型** — 布林值

布林值，指定驅動程式是將 Redshift 資料傳回為 Unicode 還是一般 SQL 類型。
+  1 \$1 TRUE：驅動程式會傳回字元資料類型的廣泛 SQL 類型。
  + SQL\$1WCHAR 會傳回，而不是 SQL\$1CHAR。
  + SQL\$1WVARCHAR 會傳回，而不是 SQL\$1VARCHAR。
  + SQL\$1WLONGVARCHAR 會傳回，而不是 SQL\$1LONGVARCHAR。
+  0 \$1 FALSE：驅動程式會傳回字元資料類型的一般 SQL 類型。
  + SQL\$1CHAR 會傳回，而不是 SQL\$1WCHAR。
  + SQL\$1VARCHAR 會傳回，而不是 SQL\$1WVARCHAR。
  + SQL\$1LONGVARCHAR 會傳回，而不是 SQL\$1WLONGVARCHAR。

此為選用參數。它適用於驅動程式 2.1.15 版和更新版本。

## web\$1identity\$1token
<a name="odbc20-web-identity-token-option"></a>
+ **預設值** — 無
+ **資料類型** — 字串

身分提供者所提供的 OAUTH 權杖。其會用於 JWT 外掛程式。

如果您將 **plugin\$1name** 參數設定為 BasicJwtCredentialsProvider，則此為必要參數。

# 先前的 ODBC 驅動程式版本
<a name="odbc20-previous-versions"></a>

請在您的工具需要特定版本的驅動程式時，才下載 Amazon Redshift ODBC 驅動程式 2.x 版之前的版本。

## 使用先前的 ODBC 驅動程式版本 (適用於 Microsoft Windows)
<a name="odbc20-previous-versions-windows"></a>

以下是適用於 Microsoft Windows 的舊版 Amazon Redshift ODBC 驅動程式 2.x 版：
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.14.0/AmazonRedshiftODBC64-2.1.14.0.msi](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.14.0/AmazonRedshiftODBC64-2.1.14.0.msi) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.13.0/AmazonRedshiftODBC64-2.1.13.0.msi](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.13.0/AmazonRedshiftODBC64-2.1.13.0.msi) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.12.0/AmazonRedshiftODBC64-2.1.12.0.msi](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.12.0/AmazonRedshiftODBC64-2.1.12.0.msi) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.11.0/AmazonRedshiftODBC64-2.1.11.0.msi](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.11.0/AmazonRedshiftODBC64-2.1.11.0.msi) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.10.0/AmazonRedshiftODBC64-2.1.10.0.msi](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.10.0/AmazonRedshiftODBC64-2.1.10.0.msi) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.9.0/AmazonRedshiftODBC64-2.1.9.0.msi](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.9.0/AmazonRedshiftODBC64-2.1.9.0.msi) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.9.0/AmazonRedshiftODBC64-2.1.9.0.msi](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.9.0/AmazonRedshiftODBC64-2.1.9.0.msi) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.8.0/AmazonRedshiftODBC64-2.1.8.0.msi](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.8.0/AmazonRedshiftODBC64-2.1.8.0.msi) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.7.0/AmazonRedshiftODBC64-2.1.7.0.msi](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.7.0/AmazonRedshiftODBC64-2.1.7.0.msi) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.6.0/AmazonRedshiftODBC64-2.1.6.0.msi](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.6.0/AmazonRedshiftODBC64-2.1.6.0.msi) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.4.0/AmazonRedshiftODBC64-2.1.4.0.msi](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.4.0/AmazonRedshiftODBC64-2.1.4.0.msi) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.3.0/AmazonRedshiftODBC64-2.1.3.0.msi](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.3.0/AmazonRedshiftODBC64-2.1.3.0.msi) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.2.0/AmazonRedshiftODBC64-2.1.2.0.msi](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.2.0/AmazonRedshiftODBC64-2.1.2.0.msi) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.1.0/AmazonRedshiftODBC64-2.1.1.0.msi](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.1.0/AmazonRedshiftODBC64-2.1.1.0.msi) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.0.0/AmazonRedshiftODBC64-2.1.0.0.msi](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.0.0/AmazonRedshiftODBC64-2.1.0.0.msi) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.0.1.0/AmazonRedshiftODBC64-2.0.1.0.msi](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.0.1.0/AmazonRedshiftODBC64-2.0.1.0.msi) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.0.0.11/AmazonRedshiftODBC64-2.0.0.11.msi](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.0.0.11/AmazonRedshiftODBC64-2.0.0.11.msi) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.0.0.9/AmazonRedshiftODBC64-2.0.0.9.msi](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.0.0.9/AmazonRedshiftODBC64-2.0.0.9.msi) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.0.0.8/AmazonRedshiftODBC64-2.0.0.8.msi](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.0.0.8/AmazonRedshiftODBC64-2.0.0.8.msi) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.0.0.7/AmazonRedshiftODBC64-2.0.0.7.msi](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.0.0.7/AmazonRedshiftODBC64-2.0.0.7.msi) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.0.0.6/AmazonRedshiftODBC64-2.0.0.6.msi](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.0.0.6/AmazonRedshiftODBC64-2.0.0.6.msi) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.0.0.5/AmazonRedshiftODBC64-2.0.0.5.msi](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.0.0.5/AmazonRedshiftODBC64-2.0.0.5.msi) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.0.0.3/AmazonRedshiftODBC64-2.0.0.3.msi](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.0.0.3/AmazonRedshiftODBC64-2.0.0.3.msi) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.0.0.1/AmazonRedshiftODBC64-2.0.0.1.msi](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.0.0.1/AmazonRedshiftODBC64-2.0.0.1.msi) 

## 使用先前的 ODBC 驅動程式版本 (適用於 Linux)
<a name="odbc20-previous-versions-linux"></a>

以下是適用於 Linux 的舊版 Amazon Redshift ODBC 驅動程式 2.x 版：
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.14.0/AmazonRedshiftODBC-64-bit-2.1.14.0.x86\$164.rpm](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.14.0/AmazonRedshiftODBC-64-bit-2.1.14.0.x86_64.rpm) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.14.0/AmazonRedshiftODBC-64-bit-2.1.14.0.aarch64.rpm](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.14.0/AmazonRedshiftODBC-64-bit-2.1.14.0.aarch64.rpm) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.13.0/AmazonRedshiftODBC-64-bit-2.1.13.0.x86\$164.rpm](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.13.0/AmazonRedshiftODBC-64-bit-2.1.13.0.x86_64.rpm) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.13.0/AmazonRedshiftODBC-64-bit-2.1.13.0.aarch64.rpm](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.13.0/AmazonRedshiftODBC-64-bit-2.1.13.0.aarch64.rpm) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.12.0/AmazonRedshiftODBC-64-bit-2.1.12.0.x86\$164.rpm](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.12.0/AmazonRedshiftODBC-64-bit-2.1.12.0.x86_64.rpm) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.12.0/AmazonRedshiftODBC-64-bit-2.1.12.0.aarch64.rpm](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.12.0/AmazonRedshiftODBC-64-bit-2.1.12.0.aarch64.rpm) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.11.0/AmazonRedshiftODBC-64-bit-2.1.11.0.x86\$164.rpm](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.11.0/AmazonRedshiftODBC-64-bit-2.1.11.0.x86_64.rpm) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.11.0/AmazonRedshiftODBC-64-bit-2.1.11.0.aarch64.rpm](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.11.0/AmazonRedshiftODBC-64-bit-2.1.11.0.aarch64.rpm) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.10.0/AmazonRedshiftODBC-64-bit-2.1.10.0.x86\$164.rpm](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.10.0/AmazonRedshiftODBC-64-bit-2.1.10.0.x86_64.rpm) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.9.0/AmazonRedshiftODBC-64-bit-2.1.9.0.x86\$164.rpm](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.9.0/AmazonRedshiftODBC-64-bit-2.1.9.0.x86_64.rpm) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.8.0/AmazonRedshiftODBC-64-bit-2.1.8.0.x86\$164.rpm](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.8.0/AmazonRedshiftODBC-64-bit-2.1.8.0.x86_64.rpm) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.7.0/AmazonRedshiftODBC-64-bit-2.1.7.0.x86\$164.rpm](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.7.0/AmazonRedshiftODBC-64-bit-2.1.7.0.x86_64.rpm) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.6.0/AmazonRedshiftODBC-64-bit-2.1.6.0.x86\$164.rpm](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.6.0/AmazonRedshiftODBC-64-bit-2.1.6.0.x86_64.rpm) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.4.0/AmazonRedshiftODBC-64-bit-2.1.4.0.x86\$164.rpm](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.4.0/AmazonRedshiftODBC-64-bit-2.1.4.0.x86_64.rpm) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.3.0/AmazonRedshiftODBC-64-bit-2.1.3.0.x86\$164.rpm](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.3.0/AmazonRedshiftODBC-64-bit-2.1.3.0.x86_64.rpm) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.2.0/AmazonRedshiftODBC-64-bit-2.1.2.0.x86\$164.rpm](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.2.0/AmazonRedshiftODBC-64-bit-2.1.2.0.x86_64.rpm) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.1.0/AmazonRedshiftODBC-64-bit-2.1.1.0.x86\$164.rpm](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.1.0/AmazonRedshiftODBC-64-bit-2.1.1.0.x86_64.rpm) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.0.0/AmazonRedshiftODBC-64-bit-2.1.0.0.x86\$164.rpm](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.0.0/AmazonRedshiftODBC-64-bit-2.1.0.0.x86_64.rpm) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.0.1.0/AmazonRedshiftODBC-64-bit-2.0.1.0.x86\$164.rpm](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.0.1.0/AmazonRedshiftODBC-64-bit-2.0.1.0.x86_64.rpm) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.0.0.11/AmazonRedshiftODBC-64-bit-2.0.0.11.x86\$164.rpm](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.0.0.11/AmazonRedshiftODBC-64-bit-2.0.0.11.x86_64.rpm) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.0.0.9/AmazonRedshiftODBC-64-bit-2.0.0.9.x86\$164.rpm](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.0.0.9/AmazonRedshiftODBC-64-bit-2.0.0.9.x86_64.rpm) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.0.0.8/AmazonRedshiftODBC-64-bit-2.0.0.8.x86\$164.rpm](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.0.0.8/AmazonRedshiftODBC-64-bit-2.0.0.8.x86_64.rpm) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.0.0.7/AmazonRedshiftODBC-64-bit-2.0.0.7.x86\$164.rpm](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.0.0.7/AmazonRedshiftODBC-64-bit-2.0.0.7.x86_64.rpm) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.0.0.6/AmazonRedshiftODBC-64-bit-2.0.0.6.x86\$164.rpm](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.0.0.6/AmazonRedshiftODBC-64-bit-2.0.0.6.x86_64.rpm) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.0.0.5/AmazonRedshiftODBC-64-bit-2.0.0.5.x86\$164.rpm](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.0.0.5/AmazonRedshiftODBC-64-bit-2.0.0.5.x86_64.rpm) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.0.0.3/AmazonRedshiftODBC-64-bit-2.0.0.3.x86\$164.rpm](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.0.0.3/AmazonRedshiftODBC-64-bit-2.0.0.3.x86_64.rpm) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.0.0.1/AmazonRedshiftODBC-64-bit-2.0.0.1.x86\$164.rpm](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.0.0.1/AmazonRedshiftODBC-64-bit-2.0.0.1.x86_64.rpm) 

## 使用 Apple macOS 的舊版 ODBC 驅動程式
<a name="odbc20-previous-versions-mac"></a>

以下是 Amazon Redshift ODBC 驅動程式 2.x for Apple macOS 的先前版本：
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.14.0/AmazonRedshiftODBC-64-bit.2.1.14.0.universal.pkg](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.14.0/AmazonRedshiftODBC-64-bit.2.1.14.0.universal.pkg) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.13.0/AmazonRedshiftODBC-64-bit.2.1.13.0.universal.pkg](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.13.0/AmazonRedshiftODBC-64-bit.2.1.13.0.universal.pkg) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.12.0/AmazonRedshiftODBC-64-bit.2.1.12.0.universal.pkg](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.12.0/AmazonRedshiftODBC-64-bit.2.1.12.0.universal.pkg) 

# 設定 ODBC 驅動程式 1.x 版連線
<a name="configure-odbc-connection"></a>

您可以從許多第三方 SQL 用戶端工具和應用程式使用 ODBC 連線來連線至 Amazon Redshift 叢集。若要這麼做，請在用戶端電腦或 Amazon EC2 執行個體上設定連線。如果用戶端工具支援 JDBC，您可能選擇使用這種連線，而非 ODBC，因為 JDBC 的設定簡單。但是，如果用戶端工具不支援 JDBC，請遵循本節的步驟來設定 ODBC 連線。

Amazon Redshift 會提供適用於 Linux、Windows 和 macOS X 作業系統的 64 位元 ODBC 驅動程式。32 位元的 ODBC 驅動程式已停止使用。除了緊急的安全修補程式外，不會再發佈其他更新。

如需 ODBC 驅動程式功能和先決條件的最新資訊，請參閱 [Amazon Redshift ODBC 驅動程式版本備註](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.6.3.1008/Release+Notes.pdf)。

如需 Amazon Redshift ODBC 驅動程式的安裝與組態資訊，請參閱 [Amazon Redshift ODBC 連接器安裝和組態指南](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.6.3.1008/Amazon+Redshift+ODBC+Connector+Install+Guide.pdf)。

**Topics**
+ [取得 ODBC URL](obtain-odbc-url.md)
+ [在 Microsoft Windows 上使用 Amazon Redshift ODBC 驅動器](install-odbc-driver-windows.md)
+ [在 Linux 上使用 Amazon Redshift ODBC 驅動器](install-odbc-driver-linux.md)
+ [在 macOS X 上使用 Amazon Redshift ODBC 驅動器](install-odbc-driver-mac.md)
+ [ODBC 驅動器選項](configure-odbc-options.md)
+ [先前的 ODBC 驅動程式版本](odbc-previous-versions.md)

# 取得 ODBC URL
<a name="obtain-odbc-url"></a>

Amazon Redshift 會在 Amazon Redshift 主控台中顯示叢集的 ODBC URL。此 URL 包含要在用戶端電腦和資料庫之間設定連線的資訊。

 ODBC URL 採用下列格式：`Driver={driver};Server=endpoint;Database=database_name;UID=user_name;PWD=password;Port=port_number`

前面顯示的格式欄位具有下列值。

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/redshift/latest/mgmt/obtain-odbc-url.html)

 上述資料表中的欄位可包含下列特殊字元：

```
[]{}(),;?*=!@ 
```

 如果您使用這些特殊字元，則必須用大括號括住值。例如，連線字串中的密碼值 `Your;password123` 會表示為 `PWD={Your;password123};`。

 由於 `Field=value` 配對會以分號分隔，因此 `}` 與 `;` 的組合中間若有任意數量的空格，將會被視為是 `Field={value};` 配對的結尾。建議您避免在欄位值中使用連續的 `};`。例如，如果您將密碼值設定為 `PWD={This is a passwor} ;d};`，則密碼會是 `This is a passwor} ;`，因此 URL 會發生錯誤。

以下是 ODBC URL 範例。

```
Driver={Amazon Redshift (x64)};
                    Server=examplecluster.abc123xyz789.us-west-2.redshift.amazonaws.com;
                    Database=dev; 
                    UID=adminuser;
                    PWD=insert_your_admin_user_password_here;
                    Port=5439
```

如需如何取得 ODBC 連線的資訊，請參閱[尋找叢集連線字串](connecting-connection-string.md)。

# 在 Microsoft Windows 上使用 Amazon Redshift ODBC 驅動器
<a name="install-odbc-driver-windows"></a>

請在存取 Amazon Redshift 資料倉儲的用戶端電腦上安裝 Amazon Redshift ODBC 驅動程式。您安裝驅動程式的每一台電腦必須符合最低系統需求清單：如需最低系統要求的相關資訊，請參閱 [Amazon Redshift ODBC 連接器安裝和組態指南](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.6.3.1008/Amazon+Redshift+ODBC+Connector+Install+Guide.pdf)。

**Topics**
+ [下載並安裝 Amazon Redshift ODBC 驅動器](odbc-driver-windows-how-to-install.md)
+ [建立 ODBC 連線的系統 DSN 項目](create-dsn-odbc-windows.md)

# 下載並安裝 Amazon Redshift ODBC 驅動器
<a name="odbc-driver-windows-how-to-install"></a>

使用下列程序來下載適用於 Windows 作業系統的 Amazon Redshift ODBC 驅動程式。僅在您執行的第三方應用程式經認證可與 Amazon Redshift 搭配使用，且需要有特定驅動程式時，才使用不同於以下的驅動程式。

**安裝 ODBC 驅動程式**

1. 根據 SQL 用戶端工具或應用程式的系統架構，下載下列其中一個項目：
   + [64 位元 ODBC 驅動程式 1.6.3 版](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.6.3.1008/AmazonRedshiftODBC64-1.6.3.1008.msi) 

     這個驅動程式的名稱是 Amazon Redshift (x64)。
   + [32 位元 ODBC 驅動程式版本 1.4.52](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.4.52.1000/AmazonRedshiftODBC32-1.4.52.1000.msi) 

     這個驅動程式的名稱是 Amazon Redshift (x86)。32 位元的 ODBC 驅動程式已停止使用。除了緊急的安全修補程式外，不會再發佈其他更新。
**注意**  
下載對應於 SQL 用戶端工具或應用程式之系統架構的 MSI 套件。例如，假設 SQL 用戶端工具是 64 位元，請安裝 64 位元驅動程式。

    然後下載並檢閱 [Amazon Redshift ODBC 和 JDBC 驅動程式授權合約](https://s3.amazonaws.com/redshift-downloads/drivers/Amazon+Redshift+ODBC+and+JDBC+Driver+License+Agreement.pdf)。

1.  按兩下 .msi 檔案，然後遵循精靈中的步驟來安裝驅動程式。

# 建立 ODBC 連線的系統 DSN 項目
<a name="create-dsn-odbc-windows"></a>

在下載並安裝 ODBC 驅動程式之後，請將資料來源名稱 (DSN) 項目新增至用戶端電腦或 Amazon EC2 執行個體。SQL 用戶端工具會使用此資料來源以連線至 Amazon Redshift 資料庫。

建議您建立系統 DSN，而不是使用者 DSN。某些應用程式會使用不同的使用者帳戶載入資料。這些應用程式可能無法偵測在另一個使用者帳戶下建立的使用者 DSN。

**注意**  
對於使用 AWS Identity and Access Management (IAM) 登入資料或身分提供者 (IdP) 登入資料的身分驗證，需要額外的步驟。如需詳細資訊，請參閱[步驟 5：設定 JDBC 或 ODBC 連線使用 IAM 登入資料](generating-iam-credentials-steps.md#generating-iam-credentials-configure-jdbc-odbc)。

如需如何建立系統 DSN 項目的相關資訊，請參閱 [Amazon Redshift ODBC 連接器安裝和組態指南](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.6.3.1008/Amazon+Redshift+ODBC+Connector+Install+Guide.pdf)。

**在 Windows 上建立 ODBC 連線的系統 DSN 項目**

1. 在 **Start (開啟)** 功能表中，開啟 **ODBC Data Sources (ODBC 資料來源)**。

   確定您選擇的 ODBC 資料來源管理員具有與您要用來連線到 Amazon Redshift 的用戶端應用程式相同的位元。

1. 在 **ODBC 資料來源管理員**中，選擇**驅動程式**索引標籤並尋找驅動程式資料夾：
   + **Amazon Redshift ODBC 驅動程式 (64 位元)**
   + **Amazon Redshift ODBC 驅動程式 (32 位元)**

1.  選擇 **System DSN (系統 DSN)** 標籤，為電腦上的所有使用者設定驅動程式，或選擇 **User DSN (使用者 DSN)** 標籤，只為您的使用者帳戶設定驅動程式。

1.  選擇**新增**。**Create New Data Source (建立新的資料來源)** 視窗會開啟。

1.  選擇 **Amazon Redshift** ODBC 驅動程式，然後選擇**完成**。**Amazon Redshift ODBC 驅動程式 DSN 設定**視窗會開啟。

1. 在 **Connection Settings (連線設定)** 下，輸入下列資訊：
<a name="rs-mgmt-dsn"></a>
**資料來源名稱**  
輸入資料來源的名稱。您可以使用稍後建立叢集連線時要用來識別資料來源的任何名稱。例如，如果您遵循了《Amazon Redshift 入門指南》**，則可能會輸入 `exampleclusterdsn`，以便輕鬆記住與此 DSN 建立關聯的叢集。
<a name="rs-mgmt-server"></a>
**Server**  
指定 Amazon Redshift 叢集的端點。您可以在 Amazon Redshift 主控台的叢集詳細資訊頁面上找到此資訊。如需詳細資訊，請參閱[在 Amazon Redshift 中設定連線](configuring-connections.md)。
<a name="rs-mgmt-port"></a>
**站點**  
輸入資料庫使用的連接埠號碼。請使用在叢集啟動或修改時設定給叢集使用的連接埠。
<a name="rs-mgmt-database"></a>
**資料庫**  
輸入 Amazon Redshift 資料庫的名稱。如果您在未指定資料庫名稱的情況下啟動了叢集，請輸入 `dev`。否則，請使用您在啟動過程選擇的名稱。如果您遵循了《Amazon Redshift 入門指南》**，請輸入 `dev`。

1. 在 **Authentication (身分驗證)** 下，指定要設定標準或 IAM 身分驗證的組態選項。如需不同身分驗證選項的相關資訊，請參閱《Amazon Redshift ODBC 連接器安裝和組態指南》**中的「在 Windows 上設定身分驗證」。

1. 在 **SSL Settings (SSL 設定)** 下，指定下列這一項的值：
<a name="rs-mgmt-ssl-authentication"></a>
**SSL authentication (SSL 身分驗證)**  
選擇用於處理 Secure Sockets Layer (SSL) 的模式。在測試環境中，您可以使用 `prefer`。不過，若為生產環境且需要交換安全資料時，請使用 `verify-ca` 或 `verify-full`。如需在 Windows 上使用 SSL 的相關資訊，請參閱《Amazon Redshift ODBC 連接器安裝和組態指南》**中的「在 Windows 上設定 SSL 驗證」。

1. 在 **Additional Options (其他選項)** 下，指定如何將查詢結果傳回給 SQL 用戶端工具或應用程式的選項。如需詳細資訊，請參閱《Amazon Redshift ODBC 連接器安裝和組態指南》**中的「在 Windows 上設定其他選項」。

1. 在 **Logging Options (記錄選項)** 中，指定記錄選項的值：如需詳細資訊，請參閱《Amazon Redshift ODBC 連接器安裝和組態指南》**中的「在 Windows 上設定記錄選項」。

   然後選擇 **OK (確定)**。

1. 在 **Data Type Options (資料類型選項)** 下，指定資料類型的值。如需詳細資訊，請參閱《Amazon Redshift ODBC 連接器安裝和組態指南》**中的「在 Windows 上設定資料類型選項」。

   然後選擇 **OK (確定)**。

1. 選擇**測試**。如果用戶端電腦可以連線至 Amazon Redshift 資料庫，您會看到下列訊息：**連線成功**。

    如果用戶端電腦無法連線至資料庫，您可以對可能的問題進行疑難排解。如需詳細資訊，請參閱[針對 Amazon Redshift 中的連線問題進行疑難排解](troubleshooting-connections.md)。

1. 在 Windows 上設定 TCP 保持連線，以防止連線逾時。如需如何在 Windows 上設定 TCP 保持連線的相關資訊，請參閱《Amazon Redshift ODBC 連接器安裝和組態指南》**。

1. 若要協助疑難排解，請設定記錄。如需如何在 Windows 上設定記錄的相關資訊，請參閱《Amazon Redshift ODBC 連接器安裝和組態指南》**。

# 在 Linux 上使用 Amazon Redshift ODBC 驅動器
<a name="install-odbc-driver-linux"></a>

請在存取 Amazon Redshift 資料倉儲的用戶端電腦上安裝 Amazon Redshift ODBC 驅動程式。您安裝驅動程式的每一台電腦必須符合最低系統需求清單：如需最低系統要求的相關資訊，請參閱 [Amazon Redshift ODBC 連接器安裝和組態指南](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.6.3.1008/Amazon+Redshift+ODBC+Connector+Install+Guide.pdf)。

**Topics**
+ [下載並安裝 Amazon Redshift ODBC 驅動器](odbc-driver-linux-how-to-install.md)
+ [使用 ODBC 驅動器管理員設定驅動器](odbc-driver-configure-linux.md)

# 下載並安裝 Amazon Redshift ODBC 驅動器
<a name="odbc-driver-linux-how-to-install"></a>

使用本節的步驟來下載 Amazon Redshift ODBC 驅動程式並安裝在 Linux 發行版本上。安裝程序會將驅動程式檔案安裝在下列目錄中：
+ `/opt/amazon/redshiftodbc/lib/64` (適用於 64 位元驅動程式)
+ `/opt/amazon/redshiftodbc/ErrorMessages`
+ `/opt/amazon/redshiftodbc/Setup`
+  `/opt/amazon/redshiftodbc/lib/32` (適用於 32 位元驅動程式)<a name="rs-mgmt-install-odbc-drivers-linux"></a>

**安裝 Amazon Redshift ODBC 驅動程式**

1. 根據 SQL 用戶端工具或應用程式的系統架構，下載下列其中一個項目：
   + [64 位元 RPM 驅動程式 1.6.3 版](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.6.3.1008/AmazonRedshiftODBC-64-bit-1.6.3.1008-1.x86_64.rpm) 
   + [64 位元 Debian 驅動程式 1.6.3 版](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.6.3.1008/AmazonRedshiftODBC-64-bit-1.6.3.1008-1.x86_64.deb) 
   + [32 位元驅動程式版本 1.4.52](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.4.52.1000/AmazonRedshiftODBC-32-bit-1.4.52.1000-1.i686.rpm) 

   其中每一個驅動程式的名稱都是 Amazon Redshift ODBC 驅動程式。32 位元的 ODBC 驅動程式已停止使用。除了緊急的安全修補程式外，不會再發佈其他更新。
**注意**  
下載對應於 SQL 用戶端工具或應用程式之系統架構的套件。例如，假設用戶端工具是 64 位元，請安裝 64 位元驅動程式。

    然後下載並檢閱 [Amazon Redshift ODBC 和 JDBC 驅動程式授權合約](https://s3.amazonaws.com/redshift-downloads/drivers/Amazon+Redshift+ODBC+and+JDBC+Driver+License+Agreement.pdf)。

1. 移至您下載套件的位置，然後執行下列其中一個命令。使用與您的 Linux 發行版本相應的指令。
   + 在 RHEL 和 CentOS 作業系統上，執行下列命令。

     ```
     yum -nogpgcheck localinstall RPMFileName
     ```

     將 *`RPMFileName`* 取代為 RPM 套件檔案名稱。例如，下列命令示範安裝 64 位元驅動程式。

     ```
     yum -nogpgcheck localinstall AmazonRedshiftODBC-64-bit-1.x.xx.xxxx-x.x86_64.rpm
     ```
   + 在 SLES 上，執行下列命令。

     ```
     zypper install RPMFileName
     ```

     將 *`RPMFileName`* 取代為 RPM 套件檔案名稱。例如，下列命令示範安裝 64 位元驅動程式。

     ```
     zypper install AmazonRedshiftODBC-1.x.x.xxxx-x.x86_64.rpm
     ```
   + 在 Debian 上，執行下列命令。

     ```
     sudo apt install ./DEBFileName.deb
     ```

     將 `DEBFileName.deb` 取代為 Debian 套件檔案名稱。例如，下列命令示範安裝 64 位元驅動程式。

     ```
     sudo apt install ./AmazonRedshiftODBC-1.x.x.xxxx-x.x86_64.deb
     ```

**重要**  
驅動程式安裝完成時，請設定來用於您的系統。如需驅動程式組態的相關資訊，請參閱[使用 ODBC 驅動器管理員設定驅動器使用 ODBC 驅動器管理員設定驅動器](odbc-driver-configure-linux.md)。

# 使用 ODBC 驅動器管理員設定驅動器
<a name="odbc-driver-configure-linux"></a>

在 Linux 作業系統上，您會使用 ODBC 驅動器管理員來設定 ODBC 連線設定。ODBC 驅動程式管理員使用組態檔案來定義及設定 ODBC 資料來源和驅動程式。您使用的 ODBC 驅動程式管理員視您使用的作業系統而定。對於 Linux，這是 unixODBC 驅動器管理員。

如需支援用來設定 Amazon Redshift ODBC 驅動器的 ODBC 驅動器管理員的詳細資訊，請參閱 Linux 作業系統的 [在 Linux 上使用 Amazon Redshift ODBC 驅動器在 Linux 上使用 ODBC 驅動器](install-odbc-driver-linux.md)。另請參閱 [Amazon Redshift ODBC 連接器安裝和組態指南](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.6.3.1008/Amazon+Redshift+ODBC+Connector+Install+Guide.pdf)中的「在非 Windows 機器上指定 ODBC 驅動程式管理員」。

設定 Amazon Redshift ODBC 驅動程式需要三個檔案：`amazon.redshiftodbc.ini`、`odbc.ini` 和 `odbcinst.ini`。

如果是安裝到預設位置，則 `amazon.redshiftodbc.ini` 組態檔案位於下列其中一個目錄：
+ `/opt/amazon/redshiftodbc/lib/64` ( 適用於 Linux 作業系統上的 64 位元驅動程式)
+ `/opt/amazon/redshiftodbc/lib/32` ( 適用於 Linux 作業系統上的 32 位元驅動程式)

此外，在 Linux 的 `/opt/amazon/redshiftodbc/Setup` 下可找到範例 `odbc.ini` 和 `odbcinst.ini` 檔案。您可以使用這些檔案做為設定 Amazon Redshift ODBC 驅動程式和資料來源名稱 (DSN) 的範例。

不建議使用 Amazon Redshift ODBC 驅動程式安裝目錄來存放組態檔案。`Setup` 目錄中的範例檔案僅供當作範例。如果您後來重新安裝 Amazon Redshift ODBC 驅動程式，或升級為更新版本，安裝目錄會遭到覆寫。然後，您對這些檔案可能做的任何變更都會遺失。

若要避免這種情況，請將 `amazon.redshiftodbc.ini` 檔案複製到安裝目錄以外的目錄。如果您將此檔案複製到使用者的主目錄，請在檔案名稱開頭加上一點 (.)，將它變成隱藏檔。

對於 `odbc.ini` 和 `odbcinst.ini` 檔案，請使用位於使用者主目錄中的組態檔案，或在另一個目錄中建立新版本。根據預設，Linux 作業系統的使用者主目錄 (`/home/$USER` 或 `~/`) 中，應該有 `odbc.ini` 檔案和 `odbcinst.ini` 檔案。這些預設檔案是隱藏檔，每個檔案名稱前面以點表示。僅當使用 `-a` 旗標來列出目錄內容時，才會顯示這些檔案。

無論對 `odbc.ini` 和 `odbcinst.ini` 檔案選擇何種選項，都會修改這些檔案來新增驅動程式和 DSN 組態資訊。如果建立新檔案，則還需要設定環境變數來指定這些組態檔案所在的位置。

根據預設，ODBC 驅動程式管理員會設定為使用隱藏版本的 `odbc.ini` 和 `odbcinst.ini` 組態檔 (命名為 .`odbc.ini` 和 .`odbcinst.ini`)，這些組態檔位於主目錄中。它們也會設定為使用驅動程式安裝目錄的 `/lib` 子資料夾中的 `amazon.redshiftodbc.ini` 檔案。如果您將這些組態檔儲存在其他位置，請設定如下所述的環境變數，以便驅動程式管理員可以找到這些檔案。如需詳細資訊，請參閱 [Amazon Redshift ODBC 連接器安裝和組態指南](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.6.3.1008/Amazon+Redshift+ODBC+Connector+Install+Guide.pdf)中的「指定驅動程式組態檔案的位置」。 

## 在 Linux 作業系統上建立資料來源名稱
<a name="configure-odbc-ini-file"></a>

 使用資料來源名稱 (DSN) 連接至資料倉庫時，請設定 `odbc.ini` 檔案來定義 DSN。在 `odbc.ini` 檔案中設定屬性，以建立 DSN 來指定資料倉庫的連線資訊。

如需如何設定 `odbc.ini` 檔案的相關資訊，請參閱 [Amazon Redshift ODBC 連接器安裝和組態指南](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.6.3.1008/Amazon+Redshift+ODBC+Connector+Install+Guide.pdf)中的「在非 Windows 機器上建立資料來源名稱」 

 在 Linux 作業系統上使用下列格式。

```
[ODBC Data Sources]
driver_name=dsn_name

[dsn_name]
Driver=path/driver_file

Host=cluster_endpoint
Port=port_number
Database=database_name
locale=locale
```

以下範例示範 Linux 作業系統上使用 64 位元 ODBC 驅動程式的 odbc.ini 組態。

```
[ODBC Data Sources]
Amazon_Redshift_x64=Amazon Redshift (x64)

[Amazon Redshift (x64)]
Driver=/opt/amazon/redshiftodbc/lib/64/libamazonredshiftodbc64.so
Host=examplecluster.abc123xyz789.us-west-2.redshift.amazonaws.com
Port=5932
Database=dev
locale=en-US
```

以下範例示範 Linux 作業系統上使用 32 位元 ODBC 驅動程式的 odbc.ini 組態。

```
[ODBC Data Sources]
Amazon_Redshift_x32=Amazon Redshift (x86)

[Amazon Redshift (x86)]
Driver=/opt/amazon/redshiftodbc/lib/32/libamazonredshiftodbc32.so
Host=examplecluster.abc123xyz789.us-west-2.redshift.amazonaws.com
Port=5932
Database=dev
locale=en-US
```

## 在 Linux 作業系統上設定沒有 DSN 的連線
<a name="configure-odbcinst-ini-file"></a>

若要透過沒有 DSN 的連線連接至您的資料存放區，請在 `odbcinst.ini` 檔案中定義驅動程式。然後，在應用程式中提供無 DSN 的連線字串。

如需如何在此情況下設定 `odbcinst.ini` 檔案的相關資訊，請參閱 [Amazon Redshift ODBC 連接器安裝和組態指南](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.6.3.1008/Amazon+Redshift+ODBC+Connector+Install+Guide.pdf)中的「在非 Windows 機器上設定無 DSN 的連線」。 

在 Linux 作業系統上使用下列格式。

```
[ODBC Drivers]
driver_name=Installed
...
                            
[driver_name]
Description=driver_description
Driver=path/driver_file
    
...
```

以下範例針對 Linux 作業系統上安裝於預設目錄中的 64 位元驅動程式示範 `odbcinst.ini` 組態。

```
[ODBC Drivers]
Amazon Redshift (x64)=Installed

[Amazon Redshift (x64)]
Description=Amazon Redshift ODBC Driver (64-bit)
Driver=/opt/amazon/redshiftodbc/lib/64/libamazonredshiftodbc64.so
```

以下範例針對 Linux 作業系統上安裝於預設目錄中的 32 位元驅動程式示範 `odbcinst.ini` 組態。

```
[ODBC Drivers]
Amazon Redshift (x86)=Installed

[Amazon Redshift (x86)]
Description=Amazon Redshift ODBC Driver (32-bit)
Driver=/opt/amazon/redshiftodbc/lib/32/libamazonredshiftodbc32.so
```

## 設定環境變數
<a name="rs-mgmt-config-global-env-variables"></a>

使用正確的 ODBC 驅動程式管理員來載入正確的驅動程式。若要這樣做，請設定程式庫路徑環境變數。如需詳細資訊，請參閱 [Amazon Redshift ODBC 連接器安裝和組態指南](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.6.3.1008/Amazon+Redshift+ODBC+Connector+Install+Guide.pdf)中的「在非 Windows 機器上指定 ODBC 驅動程式管理員」。

根據預設，ODBC 驅動程式管理員會設定為使用隱藏版本的 `odbc.ini` 和 `odbcinst.ini` 組態檔 (命名為 .`odbc.ini` 和 .`odbcinst.ini`)，這些組態檔位於主目錄中。它們也會設定為使用驅動程式安裝目錄的 `/lib` 子資料夾中的 `amazon.redshiftodbc.ini` 檔案。如果您將這些組態檔儲存在其他位置，請設定環境變數，以便驅動程式管理員可以找到這些檔案。如需詳細資訊，請參閱《Amazon Redshift ODBC 連接器安裝和組態指南》**中的「指定驅動程式組態檔案的位置」。

## 設定連線功能
<a name="connection-config-features"></a>

您可以將下列連線功能設定給 ODBC 設定：
+ 設定 ODBC 驅動程式以提供憑證，並驗證 Amazon Redshift 資料庫的連線。
+ 設定 ODBC 驅動程式，以連線到啟用 Secure Sockets Layer (SSL) 的通訊端 (如果您連線到已啟用 SSL 的 Amazon Redshift 伺服器)。
+ 設定 ODBC 驅動程式，以透過 Proxy 伺服器連線到 Amazon Redshift。
+ 將 ODBC 驅動程式設定為使用查詢處理模式，以防止查詢耗用太多記憶體。
+ 設定 ODBC 驅動程式，以透過代理伺服器傳遞 IAM 身分驗證程序。
+ 設定 ODBC 驅動程式，以使用 TCP 保持連線來防止連線逾時。

如需這些連線功能的相關資訊，請參閱 [Amazon Redshift ODBC 連接器安裝和組態指南](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.6.3.1008/Amazon+Redshift+ODBC+Connector+Install+Guide.pdf)。

# 在 macOS X 上使用 Amazon Redshift ODBC 驅動器
<a name="install-odbc-driver-mac"></a>

請在存取 Amazon Redshift 資料倉儲的用戶端電腦上安裝驅動程式。您安裝驅動程式的每一台電腦必須符合最低系統需求清單：如需最低系統要求的相關資訊，請參閱 [Amazon Redshift ODBC 連接器安裝和組態指南](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.6.3.1008/Amazon+Redshift+ODBC+Connector+Install+Guide.pdf)。

**Topics**
+ [下載並安裝 Amazon Redshift ODBC 驅動器](odbc-driver-mac-how-to-install.md)
+ [使用 ODBC 驅動器管理員設定驅動器](odbc-driver-configure-mac.md)

# 下載並安裝 Amazon Redshift ODBC 驅動器
<a name="odbc-driver-mac-how-to-install"></a>

使用本節的步驟來下載 Amazon Redshift ODBC 驅動程式並安裝在支援的 macOS X 版本上。安裝程序會將驅動程式檔案安裝在下列目錄中：
+ `/opt/amazon/redshift/lib/universal`
+ `/opt/amazon/redshift/ErrorMessages`
+ `/opt/amazon/redshift/Setup`<a name="rs-mgmt-install-odbc-drivers-mac"></a>

**在 macOS X 上安裝 Amazon Redshift ODBC 驅動程式**

1. 若要在 macOS X 上安裝 Amazon Redshift ODBC 驅動程式，請下載 [macOS 驅動程式 1.6.3 版。](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.6.3.1008/AmazonRedshiftODBC-64-bit.1.6.3.1008.universal.pkg)

   然後下載並檢閱 [Amazon Redshift ODBC 和 JDBC 驅動程式授權合約](https://s3.amazonaws.com/redshift-downloads/drivers/Amazon+Redshift+ODBC+and+JDBC+Driver+License+Agreement.pdf)。

1. 按兩下 **AmazonRedshiftODBC.pkg** 來執行安裝程式。

1. 依照安裝程式中的步驟完成驅動程式安裝程序。若要執行安裝，請同意授權合約的條款。

**重要**  
驅動程式安裝完成時，請設定來用於您的系統。如需驅動程式組態的相關資訊，請參閱[使用 ODBC 驅動器管理員設定驅動器使用 ODBC 驅動器管理員設定驅動器](odbc-driver-configure-mac.md)。

# 使用 ODBC 驅動器管理員設定驅動器
<a name="odbc-driver-configure-mac"></a>

在 macOS X 作業系統上，您會使用 ODBC 驅動器管理員來設定 ODBC 連線設定。ODBC 驅動程式管理員使用組態檔案來定義及設定 ODBC 資料來源和驅動程式。您使用的 ODBC 驅動程式管理員視您使用的作業系統而定。對於 macOS X 作業系統，這是 iODBC 驅動器管理員。

如需支援用來設定 Amazon Redshift ODBC 驅動器的 ODBC 驅動器管理員的詳細資訊，請參閱 macOS X 作業系統的 [在 macOS X 上使用 Amazon Redshift ODBC 驅動器在 macOS X 上使用 ODBC 驅動器](install-odbc-driver-mac.md)。另請參閱 [Amazon Redshift ODBC 連接器安裝和組態指南](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.6.3.1008/Amazon+Redshift+ODBC+Connector+Install+Guide.pdf)中的「在非 Windows 機器上指定 ODBC 驅動程式管理員」。

設定 Amazon Redshift ODBC 驅動程式需要三個檔案：`amazon.redshiftodbc.ini`、`odbc.ini` 和 `odbcinst.ini`。

如果是安裝到預設位置，則 `amazon.redshiftodbc.ini` 組態檔案位於 `/opt/amazon/redshift/lib`。

此外，在 macOS X 的 `/opt/amazon/redshift/Setup` 下可找到範例 `odbc.ini` 和 `odbcinst.ini` 檔案。您可以使用這些檔案做為設定 Amazon Redshift ODBC 驅動程式和資料來源名稱 (DSN) 的範例。

不建議使用 Amazon Redshift ODBC 驅動程式安裝目錄來存放組態檔案。`Setup` 目錄中的範例檔案僅供當作範例。如果您後來重新安裝 Amazon Redshift ODBC 驅動程式，或升級為更新版本，安裝目錄會遭到覆寫。然後，您對這些檔案可能做的任何變更都會遺失。

若要避免這種情況，請將 `amazon.redshiftodbc.ini` 檔案複製到安裝目錄以外的目錄。如果您將此檔案複製到使用者的主目錄，請在檔案名稱開頭加上一點 (.)，將它變成隱藏檔。

對於 `odbc.ini` 和 `odbcinst.ini` 檔案，請使用位於使用者主目錄中的組態檔案，或在另一個目錄中建立新版本。根據預設，macOS X 作業系統的使用者主目錄 (`/home/$USER` 或 `~/`) 中，應該有 `odbc.ini` 檔案和 `odbcinst.ini` 檔案。這些預設檔案是隱藏檔，每個檔案名稱前面以點表示。僅當使用 `-a` 旗標來列出目錄內容時，才會顯示這些檔案。

無論對 `odbc.ini` 和 `odbcinst.ini` 檔案選擇何種選項，都會修改這些檔案來新增驅動程式和 DSN 組態資訊。如果建立新檔案，則還需要設定環境變數來指定這些組態檔案所在的位置。

根據預設，ODBC 驅動程式管理員會設定為使用隱藏版本的 `odbc.ini` 和 `odbcinst.ini` 組態檔 (命名為 .`odbc.ini` 和 .`odbcinst.ini`)，這些組態檔位於主目錄中。它們也會設定為使用驅動程式安裝目錄的 `/lib` 子資料夾中的 `amazon.redshiftodbc.ini` 檔案。如果您將這些組態檔儲存在其他位置，請設定如下所述的環境變數，以便驅動程式管理員可以找到這些檔案。如需詳細資訊，請參閱 [Amazon Redshift ODBC 連接器安裝和組態指南](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.6.3.1008/Amazon+Redshift+ODBC+Connector+Install+Guide.pdf)中的「指定驅動程式組態檔案的位置」。 

## 在 macOS X 作業系統上建立資料來源名稱
<a name="configure-odbc-ini-file"></a>

 使用資料來源名稱 (DSN) 連接至資料倉庫時，請設定 `odbc.ini` 檔案來定義 DSN。在 `odbc.ini` 檔案中設定屬性，以建立 DSN 來指定資料倉庫的連線資訊。

如需有關如何設定`odbc.ini`檔案的資訊，請參閱《[Amazon Redshift ODBC 連接器安裝和組態指南](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.6.3.1008/Amazon+Redshift+ODBC+Connector+Install+Guide.pdf) 

在 macOS X 作業系統上使用下列格式。

```
[ODBC Data Sources]
driver_name=dsn_name

[dsn_name]
Driver=path/lib/amazonredshiftodbc.dylib

Host=cluster_endpoint
Port=port_number
Database=database_name
locale=locale
```

 以下範例示範 macOS X 作業系統上的 `odbc.ini` 組態。

```
[ODBC Data Sources]
Amazon_Redshift_dylib=Amazon Redshift DSN for macOS X

[Amazon Redshift DSN for macOS X]
Driver=/opt/amazon/redshift/lib/amazonredshiftodbc.dylib
Host=examplecluster.abc123xyz789.us-west-2.redshift.amazonaws.com
Port=5932
Database=dev
locale=en-US
```

## 在 macOS X 作業系統上設定沒有 DSN 的連線
<a name="configure-odbcinst-ini-file"></a>

若要透過沒有 DSN 的連線連接至您的資料存放區，請在 `odbcinst.ini` 檔案中定義驅動程式。然後，在應用程式中提供無 DSN 的連線字串。

如需如何在此情況下設定 `odbcinst.ini` 檔案的相關資訊，請參閱 [Amazon Redshift ODBC 連接器安裝和組態指南](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.6.3.1008/Amazon+Redshift+ODBC+Connector+Install+Guide.pdf)中的「在非 Windows 機器上設定無 DSN 的連線」。。

在 macOS X 作業系統上使用下列格式。

```
[ODBC Drivers]
driver_name=Installed
...
                            
[driver_name]
Description=driver_description
Driver=path/lib/amazonredshiftodbc.dylib
    
...
```

以下範例針對 macOS X 作業系統上安裝於預設目錄中的驅動程式，示範 `odbcinst.ini` 組態。

```
[ODBC Drivers]
Amazon RedshiftODBC DSN=Installed

[Amazon RedshiftODBC DSN]
Description=Amazon Redshift ODBC Driver for macOS X
Driver=/opt/amazon/redshift/lib/amazonredshiftodbc.dylib
```

## 設定環境變數
<a name="rs-mgmt-config-global-env-variables"></a>

使用正確的 ODBC 驅動程式管理員來載入正確的驅動程式。若要這樣做，請設定程式庫路徑環境變數。如需詳細資訊，請參閱 [Amazon Redshift ODBC 連接器安裝和組態指南](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.6.3.1008/Amazon+Redshift+ODBC+Connector+Install+Guide.pdf)中的「在非 Windows 機器上指定 ODBC 驅動程式管理員」。

根據預設，ODBC 驅動程式管理員會設定為使用隱藏版本的 `odbc.ini` 和 `odbcinst.ini` 組態檔 (命名為 .`odbc.ini` 和 .`odbcinst.ini`)，這些組態檔位於主目錄中。它們也會設定為使用驅動程式安裝目錄的 `/lib` 子資料夾中的 `amazon.redshiftodbc.ini` 檔案。如果您將這些組態檔儲存在其他位置，請設定環境變數，以便驅動程式管理員可以找到這些檔案。如需詳細資訊，請參閱《Amazon Redshift ODBC 連接器安裝和組態指南》**中的「指定驅動程式組態檔案的位置」。

## 設定連線功能
<a name="connection-config-features"></a>

您可以將下列連線功能設定給 ODBC 設定：
+ 設定 ODBC 驅動程式以提供憑證，並驗證 Amazon Redshift 資料庫的連線。
+ 設定 ODBC 驅動程式，以連線到啟用 Secure Sockets Layer (SSL) 的通訊端 (如果您連線到已啟用 SSL 的 Amazon Redshift 伺服器)。
+ 設定 ODBC 驅動程式，以透過 Proxy 伺服器連線到 Amazon Redshift。
+ 將 ODBC 驅動程式設定為使用查詢處理模式，以防止查詢耗用太多記憶體。
+ 設定 ODBC 驅動程式，以透過代理伺服器傳遞 IAM 身分驗證程序。
+ 設定 ODBC 驅動程式，以使用 TCP 保持連線來防止連線逾時。

如需這些連線功能的相關資訊，請參閱 [Amazon Redshift ODBC 連接器安裝和組態指南](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.6.3.1008/Amazon+Redshift+ODBC+Connector+Install+Guide.pdf)。

# ODBC 驅動器選項
<a name="configure-odbc-options"></a>

您可以使用組態選項來控制 Amazon Redshift ODBC 驅動程式的行為。

在 Microsoft Windows 中，您通常於設定資料來源名稱 (DSN) 時設定驅動程式選項。您也可以在連接時以程式設計方式在連線字串中設定驅動程式選項，或在 `HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI\your_DSN` 中新增或變更登錄機碼。如需設定 DSN 的相關資訊，請參閱[在 Microsoft Windows 上使用 Amazon Redshift ODBC 驅動器](install-odbc-driver-windows.md)。

在 macOS X 中，您可以在 `odbc.ini` 和 `amazon.redshiftodbc.ini` 檔案中設定驅動器組態選項，如 [使用 ODBC 驅動器管理員設定驅動器使用 ODBC 驅動器管理員設定驅動器](odbc-driver-configure-mac.md) 中所述。在 `amazon.redshiftodbc.ini` 檔案中設定的組態選項會套用至所有連線。相反地，`odbc.ini` 檔案中設定的組態選項是針對某個連線。`odbc.ini` 中設定的組態選項優先於 `amazon.redshiftodbc.ini` 中設定的組態選項。

如需如何設定 ODBC 驅動程式組態選項的相關資訊，請參閱 [Amazon Redshift ODBC 連接器安裝和組態指南](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.6.3.1008/Amazon+Redshift+ODBC+Connector+Install+Guide.pdf)。

# 先前的 ODBC 驅動程式版本
<a name="odbc-previous-versions"></a>

只有在您的工具需要特定版本的驅動程式時，才需要下載舊版的 Amazon Redshift ODBC 驅動程式。

## 先前的 ODBC 驅動器版本 (適用於 Windows)
<a name="odbc-previous-versions-windows"></a>

以下是 64 位元驅動程式：
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.6.3.1006/AmazonRedshiftODBC64-1.6.3.1006.msi](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.6.3.1006/AmazonRedshiftODBC64-1.6.3.1006.msi) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.6.1.1000/AmazonRedshiftODBC64-1.6.1.1000.msi](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.6.1.1000/AmazonRedshiftODBC64-1.6.1.1000.msi) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.5.20.1024/AmazonRedshiftODBC64-1.5.20.1024.msi](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.5.20.1024/AmazonRedshiftODBC64-1.5.20.1024.msi) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.5.16.1019/AmazonRedshiftODBC64-1.5.16.1019.msi](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.5.16.1019/AmazonRedshiftODBC64-1.5.16.1019.msi) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.5.9.1011/AmazonRedshiftODBC64-1.5.9.1011.msi](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.5.9.1011/AmazonRedshiftODBC64-1.5.9.1011.msi) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.5.7.1007/AmazonRedshiftODBC64-1.5.7.1007.msi](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.5.7.1007/AmazonRedshiftODBC64-1.5.7.1007.msi) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.4.65.1000/AmazonRedshiftODBC64-1.4.65.1000.msi](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.4.65.1000/AmazonRedshiftODBC64-1.4.65.1000.msi) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.4.62.1000/AmazonRedshiftODBC64-1.4.62.1000.msi](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.4.62.1000/AmazonRedshiftODBC64-1.4.62.1000.msi) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.4.59.1000/AmazonRedshiftODBC64-1.4.59.1000.msi](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.4.59.1000/AmazonRedshiftODBC64-1.4.59.1000.msi) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.4.56.1000/AmazonRedshiftODBC64-1.4.56.1000.msi](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.4.56.1000/AmazonRedshiftODBC64-1.4.56.1000.msi) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.4.53.1000/AmazonRedshiftODBC64-1.4.53.1000.msi](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.4.53.1000/AmazonRedshiftODBC64-1.4.53.1000.msi) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.4.52.1000/AmazonRedshiftODBC64-1.4.52.1000.msi](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.4.52.1000/AmazonRedshiftODBC64-1.4.52.1000.msi) 

32 位元的驅動程式已停止使用，先前的版本已不受支援。

## 先前的 ODBC 驅動器版本 (適用於 Linux)
<a name="odbc-previous-versions-linux"></a>

以下是 64 位元驅動程式版本：
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.6.3.1006/AmazonRedshiftODBC-64-bit-1.6.3.1006-1.x86\$164.rpm](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.6.3.1006/AmazonRedshiftODBC-64-bit-1.6.3.1006-1.x86_64.rpm) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.6.1.1000/AmazonRedshiftODBC-64-bit-1.6.1.1000-1.x86\$164.rpm](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.6.1.1000/AmazonRedshiftODBC-64-bit-1.6.1.1000-1.x86_64.rpm) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.5.20.1024/AmazonRedshiftODBC-64-bit-1.5.20.1024-1.x86\$164.rpm](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.5.20.1024/AmazonRedshiftODBC-64-bit-1.5.20.1024-1.x86_64.rpm) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.5.16.1019/AmazonRedshiftODBC-64-bit-1.5.16.1019-1.x86\$164.rpm](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.5.16.1019/AmazonRedshiftODBC-64-bit-1.5.16.1019-1.x86_64.rpm) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.5.9.1011/AmazonRedshiftODBC-64-bit-1.5.9.1011-1.x86\$164.rpm](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.5.9.1011/AmazonRedshiftODBC-64-bit-1.5.9.1011-1.x86_64.rpm) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.5.7.1007/AmazonRedshiftODBC-64-bit-1.5.7.1007-1.x86\$164.rpm](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.5.7.1007/AmazonRedshiftODBC-64-bit-1.5.7.1007-1.x86_64.rpm) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.4.65.1000/AmazonRedshiftODBC-64-bit-1.4.65.1000-1.x86\$164.rpm](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.4.65.1000/AmazonRedshiftODBC-64-bit-1.4.65.1000-1.x86_64.rpm) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.4.62.1000/AmazonRedshiftODBC-64-bit-1.4.62.1000-1.x86\$164.rpm](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.4.62.1000/AmazonRedshiftODBC-64-bit-1.4.62.1000-1.x86_64.rpm) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.4.59.1000/AmazonRedshiftODBC-64-bit-1.4.59.1000-1.x86\$164.rpm](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.4.59.1000/AmazonRedshiftODBC-64-bit-1.4.59.1000-1.x86_64.rpm) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.4.59.1000/AmazonRedshiftODBC-64-bit-1.4.59.1000-1.x86\$164.deb](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.4.59.1000/AmazonRedshiftODBC-64-bit-1.4.59.1000-1.x86_64.deb) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.4.56.1000/AmazonRedshiftODBC-64-bit-1.4.56.1000-1.x86\$164.rpm](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.4.56.1000/AmazonRedshiftODBC-64-bit-1.4.56.1000-1.x86_64.rpm) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.4.56.1000/AmazonRedshiftODBC-64-bit-1.4.56.1000-1.x86\$164.deb](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.4.56.1000/AmazonRedshiftODBC-64-bit-1.4.56.1000-1.x86_64.deb) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.4.52.1000/AmazonRedshiftODBC-64-bit-1.4.52.1000-1.x86\$164.rpm](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.4.52.1000/AmazonRedshiftODBC-64-bit-1.4.52.1000-1.x86_64.rpm) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.4.52.1000/AmazonRedshiftODBC-64-bit-1.4.52.1000-1.x86\$164.deb](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.4.52.1000/AmazonRedshiftODBC-64-bit-1.4.52.1000-1.x86_64.deb) 

32 位元的驅動程式已停止使用，先前的版本已不受支援。

## 先前的 ODBC 驅動器版本 (適用於 macOS X)
<a name="odbc-previous-versions-mac"></a>

以下是適用於 macOS X 的 Amazon Redshift ODBC 驅動程式版本：
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.6.3.1006/AmazonRedshiftODBC-64-bit.1.6.3.1006.universal.pkg](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.6.3.1006/AmazonRedshiftODBC-64-bit.1.6.3.1006.universal.pkg) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.6.1.1000/AmazonRedshiftODBC-64-bit.1.6.1.1000.universal.pkg](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.6.1.1000/AmazonRedshiftODBC-64-bit.1.6.1.1000.universal.pkg) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.5.20.1024/AmazonRedshiftODBC-1.5.20.1024.arm64.dmg](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.5.20.1024/AmazonRedshiftODBC-1.5.20.1024.arm64.dmg) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.5.20.1024/AmazonRedshiftODBC-1.5.20.1024.x86\$164.dmg](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.5.20.1024/AmazonRedshiftODBC-1.5.20.1024.x86_64.dmg) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.5.16.1019/AmazonRedshiftODBC-1.5.16.1019.x86\$164.dmg](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.5.16.1019/AmazonRedshiftODBC-1.5.16.1019.x86_64.dmg) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.5.9.1011/AmazonRedshiftODBC-1.5.9.1011.x86\$164.dmg](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.5.9.1011/AmazonRedshiftODBC-1.5.9.1011.x86_64.dmg) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.5.7.1007/AmazonRedshiftODBC-1.5.7.1007.x86\$164.dmg](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.5.7.1007/AmazonRedshiftODBC-1.5.7.1007.x86_64.dmg) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.4.65.1000/AmazonRedshiftODBC-1.4.65.1000.dmg](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.4.65.1000/AmazonRedshiftODBC-1.4.65.1000.dmg) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.4.62.1000/AmazonRedshiftODBC-1.4.62.1000.dmg](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.4.62.1000/AmazonRedshiftODBC-1.4.62.1000.dmg) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.4.59.1000/AmazonRedshiftODBC-1.4.59.1000.dmg](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.4.59.1000/AmazonRedshiftODBC-1.4.59.1000.dmg) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.4.56.1000/AmazonRedshiftODBC-1.4.56.1000.dmg](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.4.56.1000/AmazonRedshiftODBC-1.4.56.1000.dmg) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.4.52.1000/AmazonRedshiftODBC-1.4.52.1000.dmg](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.4.52.1000/AmazonRedshiftODBC-1.4.52.1000.dmg) 

# 設定連線的安全選項
<a name="connecting-ssl-support"></a>

Amazon Redshift 支援 Secure Sockets Layer (SSL) 連線，可將資料和伺服器憑證加密，以驗證用戶端所連線的伺服器憑證。

## SSL
<a name="connect-using-ssl"></a>

為了支援 SSL 連線，Amazon Redshift 會在每一個叢集上建立並安裝 [AWS Certificate Manager (ACM)](https://aws.amazon.com/certificate-manager/) 發行的 SSL 憑證。ACM 憑證受到大多數作業系統、網頁瀏覽器和用戶端公開信任。如果 SQL 用戶端或應用程式在 `sslmode` 連線選項設為 `require`、`verify-ca` 或 `verify-full` 的情況下，使用 SSL 連線到 Amazon Redshift，您可能需要下載憑證套件。如果用戶端需要憑證，Amazon Redshift 會提供如下的憑證套件：
+ 從 [https://s3.amazonaws.com/redshift-downloads/amazon-trust-ca-bundle.crt](https://s3.amazonaws.com/redshift-downloads/amazon-trust-ca-bundle.crt) 下載套件。
  + 預期的 MD5 檢查總和碼為 418dea9b6d5d5de7a8f1ac42e164cdcf。
  + sha256 檢查總和碼為 36dba8e4b8041cd14b9d60158893963301bcbb92e1c456847784de2acb5bd550。

  請勿使用位於 `https://s3.amazonaws.com/redshift-downloads/redshift-ca-bundle.crt` 的先前憑證套件。
+  在中國 AWS 區域，請從 https：//[https://s3---cn-north-1.amazonaws.com.rproxy.govskope.us.cn/redshift-downloads-cn/amazon-trust-ca-bundle.crt](https://s3---cn-north-1.amazonaws.com.rproxy.govskope.us.cn/redshift-downloads-cn/amazon-trust-ca-bundle.crt) 下載套件。
  + 預期的 MD5 檢查總和碼為 418dea9b6d5d5de7a8f1ac42e164cdcf。
  + sha256 檢查總和碼為 36dba8e4b8041cd14b9d60158893963301bcbb92e1c456847784de2acb5bd550。

  請勿使用位於 `https://s3---cn-north-1.amazonaws.com.rproxy.govskope.us.cn/redshift-downloads-cn/redshift-ca-bundle.crt` 和 `https://s3---cn-north-1.amazonaws.com.rproxy.govskope.us.cn/redshift-downloads-cn/redshift-ssl-ca-cert.pem` 的先前憑證套件。

**重要**  
Amazon Redshift 已變更 SSL 憑證的管理方式。您可能需要更新目前的信任根 CA 憑證，才能繼續使用 SSL 連線到叢集。如需詳細資訊，請參閱[將 SSL 連線轉換為使用 ACM 憑證](connecting-transitioning-to-acm-certs.md)。

根據預設，不論連線是否使用 SSL，叢集資料庫都接受連線。若要將叢集設為需要 SSL 連線，請在與叢集相關聯的參數群組中，將 `require_SSL` 參數設為 `true`。

Amazon Redshift 支援符合美國聯邦資訊處理標準 (FIPS) 140-2 的 SSL 模式。符合 FIPS 的 SSL 模式預設為停用。

**重要**  
只在系統需要符合 FIPS 時啟用與 FIPS 相容的 SSL 模式。

若要啟用與 FIPS 相容的 SSL 模式，請在與 Amazon Redshift 叢集或 Redshift Serverless 工作群組相關聯的參數群組中，將 `use_fips_ssl` 參數和 `require_SSL` 參數都設為 `true`。如需修改叢集上參數群組的相關資訊，請參閱 [Amazon Redshift 參數群組](working-with-parameter-groups.md)。如需修改工作群組上參數群組的相關資訊，請參閱 [設定與 FIPS 相容的 Amazon Redshift Serverless SSL 連線](serverless-connecting.md#serverless_secure-fips-ssl)。

 Amazon Redshift 支援 Elliptic Curve Diffie—Hellman Ephemeral (ECDHE) 金鑰協議通訊協定。使用 ECDHE 時，用戶端和伺服器各有橢圓曲線公有-私有金鑰對，用於透過不安全通道建立共用秘密。您不需要在 Amazon Redshift 中設定任何項目來啟用 ECDHE。如果您從 SQL 用戶端工具連線，而此工具使用 ECDHE 來加密用戶端和伺服器之間的通訊，Amazon Redshift 會使用提供的密碼清單來建立適當的連線。如需詳細資訊，請參閱 Wikipedia 上的 [Elliptic curve diffie—hellman](https://en.wikipedia.org/wiki/Elliptic_curve_Diffie%E2%80%93Hellman) 和 OpenSSL 網站上的 [Ciphers](https://www.openssl.org/)。

## ODBC 中的 SSL 和信任 CA 憑證
<a name="connecting-ssl-support-odbc"></a>

如果您使用最新的 Amazon Redshift ODBC 驅動程式 (1.3.7.1000 版或更新版本) 來連接，則可略過本節。若要下載最新的驅動程式，請參閱[設定 Amazon Redshift ODBC 驅動程式 2.x 版連線](odbc20-install.md)。

您可能需要更新目前的信任根 CA 憑證，才能繼續使用 SSL 連線到叢集。如需詳細資訊，請參閱[SSL](#connect-using-ssl)。

您可以驗證您下載的憑證是否符合預期的 MD5 檢查總和碼。若要執行此動作，您可以在 Linux 作業系統上使用 Md5sum 程式，或在 Windows 和 macOS X 作業系統上使用其他工具。

 ODBC DSN 包含 `sslmode` 設定，可決定如何處理用戶端連線和伺服器憑證驗證的加密。Amazon Redshift 支援來自用戶端連線的下列 `sslmode` 值：
+ `disable`

  停用 SSL，不加密連線。
+ `allow`

  如果伺服器需要，就使用 SSL。
+ `prefer`

  如果伺服器支援，就使用 SSL。Amazon Redshift 支援 SSL，因此當您將 `sslmode` 設定為 `prefer` 時，系統會使用 SSL。
+ `require`

  需要 SSL。
+ `verify-ca`

  必須使用 SSL 且必須驗證伺服器憑證。
+ `verify-full`

  必須使用 SSL。必須驗證伺服器憑證，且伺服器主機名稱必須符合憑證上的主機名稱屬性。

您可以判斷用戶端和伺服器之間的連線是否使用 SSL 及是否驗證伺服器憑證。若要執行此作業，您需要在用戶端檢閱 ODBC DSN 的 `sslmode` 設定，並在伺服器上檢閱 Amazon Redshift 叢集的 `require_SSL` 設定。下表描述各種用戶端和伺服器設定組合的加密結果：

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/redshift/latest/mgmt/connecting-ssl-support.html)

### 在 Microsoft Windows 上搭配 ODBC 使用伺服器憑證進行連線
<a name="connecting-ssl-support-odbc-with-cert"></a>

 如果您想要使用 SSL 和伺服器憑證連線到叢集，請先將憑證下載到用戶端電腦或 Amazon EC2 執行個體。然後，設定 ODBC DSN。

1.  將 Amazon Redshift 憑證授權機構套件下載到用戶端電腦驅動程式安裝目錄中的 `lib` 資料夾，並將檔案儲存為 `root.crt`。如需下載資訊，請參閱 [SSL](#connect-using-ssl)。

1.  開啟 **ODBC 資料來源管理員**，然後新增或編輯 ODBC 連線的系統 DSN 項目。在 **SSL 模式**中，選取 `verify-full` (除非您使用 DNS 別名)。如果您使用 DNS 別名，請選取 `verify-ca`。然後選擇 **Save** (儲存)。

    如需設定 ODBC DSN 的相關資訊，請參閱[設定 Amazon Redshift ODBC 驅動程式 2.x 版連線](odbc20-install.md)。

## Java 中的 SSL 和伺服器憑證
<a name="connecting-ssl-support-java"></a>

SSL 會將用戶端和伺服器之間移動的資料加密，多一道安全性。使用伺服器憑證可透過驗證叢集是否為 Amazon Redshift 叢集來提供額外一層的安全。在作法上是檢查您佈建的所有叢集上自動安裝的伺服器憑證。如需搭配 JDBC 使用伺服器憑證的相關資訊，請前往 PostgreSQL 文件中的 [Configuring the client](https://jdbc.postgresql.org/documentation/ssl/#configuring-the-client)。

### 在 Java 中使用信任 CA 憑證進行連線
<a name="connecting-ssl-support-java-with-cert"></a>

**重要**  
Amazon Redshift 已變更 SSL 憑證的管理方式。您可能需要更新目前的信任根 CA 憑證，才能繼續使用 SSL 連線到叢集。如需詳細資訊，請參閱[SSL](#connect-using-ssl)。

**使用信任 CA 憑證來連接**

您可以使用 `redshift-keytool.jar` 檔案，將 Amazon Redshift 憑證授權機構套件中的 CA 憑證匯入至 Java TrustStore 或您的私有信任憑證庫。

1. 如果您使用 Java 命令列 `-Djavax.net.ssl.trustStore` 選項，可能的話，請從命令列中移除。

1. 下載 [redshift-keytool.jar](https://s3.amazonaws.com/redshift-downloads/redshift-keytool.jar)。

1. 執行以下任意一項：
   + 若要將 Amazon Redshift 憑證授權機構套件匯入 Java TrustStore，請執行下列命令。

     ```
     java -jar redshift-keytool.jar -s
     ```
   + 若要將 Amazon Redshift 憑證授權機構套件匯入您的私有 TrustStore，請執行下列命令：

     ```
     java -jar redshift-keytool.jar -k <your_private_trust_store> -p <keystore_password> 
     ```

# 將 SSL 連線轉換為使用 ACM 憑證
<a name="connecting-transitioning-to-acm-certs"></a>

Amazon Redshift 將會以 [AWS Certificate Manager (ACM)](https://aws.amazon.com/certificate-manager/) 發行的憑證取代您叢集上的 SSL 憑證。ACM 是大多數現行系統信任的公有憑證授權機構 (CA)。您可能需要更新目前的信任根 CA 憑證，才能繼續使用 SSL 連線到叢集。

只有在下列所有情況都存在時，此變更才會影響您：
+  SQL 用戶端或應用程式使用 SSL 來連接至 Amazon Redshift 叢集，且 `sslMode` 連線選項設為 `require`、`verify-ca` 或 `verify-full` 組態選項。
+ 您不使用 Amazon Redshift ODBC 或 JDBC 驅動程式，或使用的 Amazon Redshift 驅動程式是 ODBC 1.3.7.1000 版或 JDBC 1.2.8.1005 版以前。

如果此變更會在 Amazon Redshift 商業區域影響到您，則您必須在 2017 年 10 月 23 日之前更新目前的信任根 CA 憑證。Amazon Redshift 會從現在開始到 2017 年 10 月 23 日之前，將您的叢集轉換為使用 ACM 憑證。此變更對叢集效能或可用性的影響應該非常小，或完全不影響。

如果此變更影響 AWS GovCloud (US) （美國） 區域，則您必須在 2020 年 4 月 1 日之前更新目前的信任根 CA 憑證，以避免服務中斷。從這個日期起，使用 SSL 加密連線連線至 Amazon Redshift 叢集的用戶端需要額外的受信任憑證授權單位 (CA)。用戶端在連線到 Amazon Redshift 叢集時，會使用受信任的憑證授權單位來確認該叢集的身分。您必須採取動作，才能更新 SQL 用戶端和應用程式，以使用包含新信任 CA 的更新憑證套件。

**重要**  
在 2021 年 1 月 5 日的中國區域中，Amazon Redshift 會將叢集上的 SSL 憑證取代為 AWS Certificate Manager (ACM) 發行的憑證。如果此變更會在中國 (北京) 區域或中國 (寧夏) 區域影響到您，則您必須在 2021 年 1 月 5 日之前更新目前的信任根 CA 憑證，以避免服務中斷。從這個日期起，使用 SSL 加密連線連線至 Amazon Redshift 叢集的用戶端需要額外的受信任憑證授權單位 (CA)。用戶端在連線到 Amazon Redshift 叢集時，會使用受信任的憑證授權單位來確認該叢集的身分。您必須採取動作，才能更新 SQL 用戶端和應用程式，以使用包含新信任 CA 的更新憑證套件。
+ [使用最新的 Amazon Redshift ODBC 或 JDBC 驅動程式](#connecting-transitioning-to-acm-latest-odbc-jdbc)
+ [使用較舊的 Amazon Redshift ODBC 或 JDBC 驅動程式](#connecting-transitioning-to-acm-earlier-odbc-jdbc)
+ [使用其他 SSL 連線類型](#connecting-transitioning-to-acm-other-ssl-types)

## 使用最新的 Amazon Redshift ODBC 或 JDBC 驅動程式
<a name="connecting-transitioning-to-acm-latest-odbc-jdbc"></a>

建議使用最新的 Amazon Redshift ODBC 或 JDBC 驅動程式。從 ODBC 1.3.7.1000 版和 JDBC 1.2.8.1005 版開始的 Amazon Redshift 驅動程式，將會自動處理從 Amazon Redshift 自簽憑證轉換到 ACM 憑證。若要下載最新的驅動程式，請參閱[設定適用於 Amazon Redshift 的 JDBC 驅動器 2.x 版的連線](jdbc20-install.md)。

如果您使用最新的 Amazon Redshift JDBC 驅動程式，最好不要在 JVM 選項中使用 `-Djavax.net.ssl.trustStore`。如果您必須使用 `-Djavax.net.ssl.trustStore`，請將 Redshift 憑證授權機構套件匯入其指向的信任憑證庫。如需下載資訊，請參閱 [SSL](connecting-ssl-support.md#connect-using-ssl)。如需詳細資訊，請參閱[將 Amazon Redshift 憑證授權機構套件匯入 TrustStore](#importing-the-acm-bundle-to-truststore)。

## 使用較舊的 Amazon Redshift ODBC 或 JDBC 驅動程式
<a name="connecting-transitioning-to-acm-earlier-odbc-jdbc"></a>
+ 如果 ODBC DSN 設定為 `SSLCertPath`，請覆寫指定路徑中的憑證檔案。
+ 如果未設定 `SSLCertPath`，請覆寫驅動程式 DLL 位置中名為 `root.crt` 的憑證檔案。

如果您必須使用的 1.2.8.1005 版以前的 Amazon Redshift JDBC 驅動程式，請執行下列其中一個動作：
+ 如果 JDBC 連線字串使用 `sslCert` 選項，請移除 `sslCert` 選項。然後將 Redshift 憑證授權機構套件匯入 Java TrustStore。如需下載資訊，請參閱 [SSL](connecting-ssl-support.md#connect-using-ssl)。如需詳細資訊，請參閱[將 Amazon Redshift 憑證授權機構套件匯入 TrustStore](#importing-the-acm-bundle-to-truststore)。
+ 如果您使用 Java 命令列 `-Djavax.net.ssl.trustStore` 選項，可能的話，請從命令列中移除。然後將 Redshift 憑證授權機構套件匯入 Java TrustStore。如需下載資訊，請參閱 [SSL](connecting-ssl-support.md#connect-using-ssl)。如需詳細資訊，請參閱[將 Amazon Redshift 憑證授權機構套件匯入 TrustStore](#importing-the-acm-bundle-to-truststore)。

### 將 Amazon Redshift 憑證授權機構套件匯入 TrustStore
<a name="importing-the-acm-bundle-to-truststore"></a>

您可以使用 `redshift-keytool.jar` 將 Amazon Redshift 憑證授權機構套件中的 CA 憑證匯入至 Java TrustStore 或您的私有信任憑證庫。

**將 Amazon Redshift 憑證授權機構套件匯入 TrustStore**

1. 下載 [redshift-keytool.jar](https://s3.amazonaws.com/redshift-downloads/redshift-keytool.jar)。

1. 執行以下任意一項：
   + 若要將 Amazon Redshift 憑證授權機構套件匯入 Java TrustStore，請執行下列命令。

     ```
     java -jar redshift-keytool.jar -s
     ```
   + 若要將 Amazon Redshift 憑證授權機構套件匯入您的私有 TrustStore，請執行下列命令：

     ```
     java -jar redshift-keytool.jar -k <your_private_trust_store> -p <keystore_password> 
     ```

## 使用其他 SSL 連線類型
<a name="connecting-transitioning-to-acm-other-ssl-types"></a>

如果您使用下列任何一項來連接，請遵循本節的步驟：
+  開放原始碼 ODBC 驅動程式 
+  開放原始碼 JDBC 驅動程式 
+  [Amazon Redshift RSQL](https://docs.aws.amazon.com/redshift/latest/mgmt/rsql-query-tool.html) 命令列界面 
+  任何以 libpq 為基礎的語言繫結，例如 psycopg2 (Python) 和 ruby-pg (Ruby) 

**若要對其他 SSL 連線類型使用 ACM 憑證，請執行下列動作：**

1.  下載 Amazon Redshift 憑證授權機構套件。如需下載資訊，請參閱 [SSL](connecting-ssl-support.md#connect-using-ssl)。

1. 將套件中的憑證放入 `root.crt` 檔案中。
   + 在 Linux 和 macOS X 作業系統上，此檔案是 `~/.postgresql/root.crt`。
   + 在 Microsoft Windows 上，此檔案是 `%APPDATA%\postgresql\root.crt`。

# 從用戶端工具和程式碼連線
<a name="connecting-via-client-tools"></a>

Amazon Redshift 提供了 Amazon Redshift 查詢編輯器 v2 供您連線到叢集和工作群組。如需詳細資訊，請參閱[使用查詢編輯器 v2 查詢資料庫使用 Amazon Redshift 查詢編輯器 v2 來查詢資料庫](query-editor-v2.md)。

本節提供一些可供第三方工具進行連線的選項。此外，還描述如何以程式設計方式連接至叢集。

**Topics**
+ [使用 Amazon Redshift RSQL 進行連線](rsql-query-tool.md)
+ [使用 Amazon Redshift RSQL 連線至叢集](rsql-query-tool-starting-tool-connection.md)
+ [Amazon Redshift RSQL 中繼命令](rsql-query-tool-commands.md)
+ [Amazon Redshift RSQL 變數](rsql-query-tool-variables.md)
+ [Amazon Redshift RSQL 錯誤代碼](rsql-query-tool-error-codes.md)
+ [Amazon Redshift RSQL 環境變數](rsql-query-tool-environment-variables.md)

# 使用 Amazon Redshift RSQL 進行連線
<a name="rsql-query-tool"></a>

 Amazon Redshift RSQL 是用於與 Amazon Redshift 叢集和資料庫互動的命令列用戶端。您可以連線到 Amazon Redshift 叢集、描述資料庫物件、查詢資料，以及檢視各種輸出格式的查詢結果。

 Amazon Redshift RSQL 支援 PostgreSQL psql 命令列工具的功能，以及一組專屬於 Amazon Redshift 的額外功能。這些索引標籤包括以下項目：
+ 您可以使用 AD FS、PingIdentity、Okta、Azure ADm 或其他 SAML/JWT 型身分提供者，來使用單一登入身分驗證。您也可以使用以瀏覽器為基礎的 SAML 身分供應商來進行多重要素驗證 (MFA)。
+ 您可以描述 Amazon Redshift 物件的屬性，例如資料表分佈索引鍵、資料表排序索引鍵、晚期繫結視觀表 (LBV) 和具體化視觀表。您也可以描述 AWS Glue 目錄或 Apache Hive 中繼存放區中外部資料表的屬性或屬性、Amazon RDS for PostgreSQL、Amazon Aurora PostgreSQL 相容版本、RDS for MySQL （預覽） 和 Amazon Aurora MySQL 相容版本 （預覽） 中的外部資料庫，以及使用 Amazon Redshift 資料共用的資料表。
+ 您也可以使用增強的控制流程命令，例如 `IF` (`\ELSEIF`、`\ELSE,`、`\ENDIF`)、`\GOTO` 和 `\LABEL`。

 透過 Amazon Redshift RSQL 批次模式 (該模式會執行以輸入參數形式傳遞的指令碼)，您可以執行同時包含 SQL 和複雜商業邏輯的指令碼。如果您有現有的自我管理內部部署資料倉儲，則可以使用 Amazon Redshift RSQL 取代現有的擷取、轉換、載入 (ETL) 和自動化指令碼，例如 Teradata BTEQ 指令碼。使用 RSQL 可以幫助您避免在程序語言中手動重新實作指令碼。

 Amazon Redshift RSQL 適用於 Linux、Windows 和 macOS X 作業系統。

若要報告 Amazon Redshift RSQL 的問題，請寫信至 redshift-rsql-support@amazon.com。

**Topics**
+ [開始使用 Amazon Redshift RSQL](rsql-query-tool-getting-started.md)
+ [Amazon Redshift RSQL 變更日誌](rsql-query-tool-changelog.md)

# 開始使用 Amazon Redshift RSQL
<a name="rsql-query-tool-getting-started"></a>

在搭載 Linux、macOS 或 Microsoft Windows 作業系統的電腦上安裝 Amazon Redshift RSQL。

## 下載 RSQL
<a name="rsql-query-tool-download"></a>
+ Linux 64 位元 RPM：[RSQL 1.1.2 版](https://s3.amazonaws.com/redshift-downloads/amazon-redshift-rsql/1.1.2/AmazonRedshiftRsql-1.1.2.rhel.x86_64.rpm) 
  + Linux 成品簽章金鑰：[金鑰](https://s3.amazonaws.com/redshift-downloads/amazon-redshift-rsql/1.1.2/AmazonRedshiftRsql-1.1.2-certificate.pem) 
  + Linux 成品簽署雜湊：[雜湊](https://s3.amazonaws.com/redshift-downloads/amazon-redshift-rsql/1.1.2/AmazonRedshiftRsql-1.1.2-signature.bin) 
+ Mac OS 64 位元 PKG：[RSQL 1.1.2 版](https://s3.amazonaws.com/redshift-downloads/amazon-redshift-rsql/1.1.2/AmazonRedshiftRsql-1.1.2.universal.pkg) 
+ Windows 64 位元 MSI：[RSQL 1.1.2 版](https://s3.amazonaws.com/redshift-downloads/amazon-redshift-rsql/1.1.2/AmazonRedshiftRsql-1.1.2.x86_64.msi) 

若要查看舊版的變更日誌和下載，請瀏覽 [Amazon Redshift RSQL 變更日誌](rsql-query-tool-changelog.md)。

## 安裝適用於 Linux 的 RSQL
<a name="rsql-query-tool-linux-install"></a>

請遵循下列步驟以安裝適用於 Linux 的 RSQL。

1. 使用以下命令安裝驅動程式管理員：

   ```
   sudo yum install unixODBC
   ```

1. 安裝 ODBC 驅動程式：[下載並安裝 Amazon Redshift ODBC 驅動器下載並安裝 ODBC 驅動器](odbc20-install-linux.md)。

1. 將 ini 檔案複製到主目錄：

   ```
   cp /opt/amazon/redshiftodbcx64/odbc.ini ~/.odbc.ini
   ```

1. 將環境變數設定為指向檔案的位置：

   ```
   export ODBCINI=~/.odbc.ini
   export ODBCSYSINI=/opt/amazon/redshiftodbcx64/
   export AMAZONREDSHIFTODBCINI=/opt/amazon/redshiftodbcx64/amazon.redshiftodbc.ini
   ```

1. 您現在可以執行下列命令來安裝 RSQL。

   ```
   sudo rpm -i AmazonRedshiftRsql-<version>.rhel.x86_64.rpm
   ```

## 安裝適用於 Mac 的 RSQL
<a name="rsql-query-tool-mac-install"></a>

請依照下列步驟安裝 RSQL for Mac OSX。

1. 使用以下命令安裝驅動程式管理員：

   ```
   brew install unixodbc --build-from-source
   ```

1. 安裝 ODBC 驅動程式：[下載並安裝 Amazon Redshift ODBC 驅動器下載並安裝 ODBC 驅動器](odbc-driver-mac-how-to-install.md)。

1. 將 ini 檔案複製到主目錄：

   ```
   cp /opt/amazon/redshift/Setup/odbc.ini ~/.odbc.ini
   ```

1. 將環境變數設定為指向檔案的位置：

   ```
   export ODBCINI=~/.odbc.ini
   export ODBCSYSINI=/opt/amazon/redshift/Setup
   export AMAZONREDSHIFTODBCINI=/opt/amazon/redshift/lib/amazon.redshiftodbc.ini
   ```

1. 將 `DYLD_LIBRARY_PATH` 設定為 libodbc.dylib 的位置 (如果它不在 `/usr/local/lib` 的話)。

   ```
   export DYLD_LIBRARY_PATH=$DYLD_LIBRARY_PATH:/usr/local/lib
   ```

1. 按兩下 pkg 檔案來執行安裝程式。

1. 依照安裝程式中的步驟完成安裝。同意授權合約中的條款。

## 安裝適用於 Windows 的 RSQL
<a name="rsql-query-tool-windows-install"></a>

請依照下列步驟安裝 RSQL for Windows。

1. 安裝 ODBC 驅動程式：[下載並安裝 Amazon Redshift ODBC 驅動器下載並安裝 ODBC 驅動器](odbc-driver-windows-how-to-install.md)。

1. 按兩下 RSQL 下載檔案以執行安裝程式，然後遵循提示以完成安裝。

# Amazon Redshift RSQL 變更日誌
<a name="rsql-query-tool-changelog"></a>

*1.1.2 (2025-12-11)*

錯誤修正
+ 修正使用 \$1goto 和 \$1label 命令導致失敗的錯誤。
+ 修正當變數以引號括住時，導致 RSQL 無法列印變數值的錯誤。
+ 修正在啟用 UseDeclareFetch 時，查詢結果超過 ODBC DSN Fetch 參數大小時，導致 RSQL 損毀的錯誤。
+ 修正即使開啟分頁器，仍會一次傳回多頁結果的問題。
+ 修正在交易區塊內查詢失敗時觸發 RSQL 損毀的錯誤。

*1.1.1 (2025-11-20)*

錯誤修正
+ 修正 RSQL 在使用 -c 旗標時錯誤剖析查詢的問題。此修正適用於所有平台。
+ 修正 Mac 上導致使用者無法在 RSQL 中使用 \$1s 命令的錯誤。

*1.1.0 (2025-11-11)*

錯誤修正
+ 已解決導致 rSQL 中意外當機的記憶體流失問題。
+ 從 RSQL 移除 OpenSSL 相依性。
+ 修正連結與相同環境中 libpq/psql 安裝的衝突。
+ 已改善 Amazon Linux 2023、Windows 和 macOS 的平台相容性。
+ 修正輸出在超過目前顯示大小時會遭到截斷的問題。

*1.0.8 (2023-06-19)*

錯誤修正
+ 修正了使用 SHOW 命令會截斷輸出的問題。
+ 已新增對用於描述外部 Kinesis 串流和 Kafka 主題之 \$1de 的支援。

*1.0.7 (2023-03-22)*

錯誤修正
+ 修正了 RSQL 無法描述具體化視觀表的問題。
+ 修正了使用 Amazon Redshift Serverless 時，stl\$1connection\$1log 上的許可遭拒錯誤。
+ 修正了 RSQL 可能無法正確處理 \$1GOTO 標籤的問題。
+ 修正了 SSL 訊息會以靜音模式列印的問題。
+ 修正了描述預存程序時會顯示隨機字元的問題。
+ 修正了會列印重複 ERROR/INFO 訊息的問題。

新增
+ RSQL 現在會直接從 ODBC 驅動程式取得 SSL 資訊。



*1.0.6 (2023-02-21)*

錯誤修正
+ 在 Redshift 修補程式 1.0.46086 (P173) 上修正了 \$1d 會擲出錯誤 (整數的輸入語法無效: "xid") 的問題。

新增
+ 已重新命名安裝檔案以反映支援的架構。



*1.0.5 (2022-06-27)*

錯誤修正
+ 將 SQL 錯誤訊息傳送到標準錯誤 (stderr)。
+ 修正了使用 ON\$1ERROR\$1STOP 時結束代碼所發生的問題。指令碼現在會在遇到錯誤後結束，並返回正確的結束代碼。
+ Maxerror 現在不區分大小寫。

新增
+ 已新增對 ODBC 2.x 驅動程式的支援。



*1.0.4 (2022-03-19)*
+ 新增對 RSPASSWORD 環境變數的支援。設定密碼以連線到 Amazon Redshift。例如 `export RSPASSWORD=TestPassw0rd`。



*1.0.3 (2021-12-08)*

錯誤修正
+ 修正了在 Windows 作業系統中使用 `\c` 或 `\logon` 在資料庫之間進行切換時的快顯對話方塊。
+ 修正了檢查 ssl 資訊時的損毀問題。



## Amazon Redshift RSQL 的先前版本
<a name="rsql-query-tool-changelog-legacy-versions"></a>

請根據您的作業系統選擇其中一個連結，以下載您需要的 Amazon Redshift RSQL 版本。

**Linux 64 位元 RPM**
+ [RSQL 1.1.1 版](https://s3.amazonaws.com/redshift-downloads/amazon-redshift-rsql/1.1.1/AmazonRedshiftRsql-1.1.1.rhel.x86_64.rpm)
+ [RSQL 1.1.0 版](https://s3.amazonaws.com/redshift-downloads/amazon-redshift-rsql/1.1.0/AmazonRedshiftRsql-1.1.0.rhel.x86_64.rpm)
+ [RSQL 1.0.8 版](https://s3.amazonaws.com/redshift-downloads/amazon-redshift-rsql/1.0.8/AmazonRedshiftRsql-1.0.8.x86_64.rpm)
+ [RSQL 1.0.7 版](https://s3.amazonaws.com/redshift-downloads/amazon-redshift-rsql/1.0.7/AmazonRedshiftRsql-1.0.7.x86_64.rpm)
+ [RSQL 1.0.6 版](https://s3.amazonaws.com/redshift-downloads/amazon-redshift-rsql/1.0.6/AmazonRedshiftRsql-1.0.6.x86_64.rpm)
+ [RSQL 1.0.5 版](https://s3.amazonaws.com/redshift-downloads/amazon-redshift-rsql/1.0.5/AmazonRedshiftRsql-1.0.5-1.x86_64.rpm)
+ [RSQL 1.0.4 版](https://s3.amazonaws.com/redshift-downloads/amazon-redshift-rsql/1.0.4/AmazonRedshiftRsql-1.0.4-1.x86_64.rpm)
+ [RSQL 1.0.3 版](https://s3.amazonaws.com/redshift-downloads/amazon-redshift-rsql/1.0.3/AmazonRedshiftRsql-1.0.3-1.x86_64.rpm)
+ [RSQL 1.0.1 版](https://s3.amazonaws.com/redshift-downloads/amazon-redshift-rsql/1.0.1/AmazonRedshiftRsql-1.0.1-1.x86_64.rpm)

**Mac OS 64 位元 DMG/PKG**
+ [RSQL 1.1.1 版](https://s3.amazonaws.com/redshift-downloads/amazon-redshift-rsql/1.1.1/AmazonRedshiftRsql-1.1.1.universal.pkg)
+ [RSQL 1.1.0 版](https://s3.amazonaws.com/redshift-downloads/amazon-redshift-rsql/1.1.0/AmazonRedshiftRsql-1.1.0.universal.pkg)
+ [RSQL 1.0.8 版](https://s3.amazonaws.com/redshift-downloads/amazon-redshift-rsql/1.0.8/AmazonRedshiftRsql-1.0.8.x86_64.dmg)
+ [RSQL 1.0.7 版](https://s3.amazonaws.com/redshift-downloads/amazon-redshift-rsql/1.0.7/AmazonRedshiftRsql-1.0.7.x86_64.dmg)
+ [RSQL 1.0.6 版](https://s3.amazonaws.com/redshift-downloads/amazon-redshift-rsql/1.0.6/AmazonRedshiftRsql-1.0.6.x86_64.dmg)
+ [RSQL 1.0.5 版](https://s3.amazonaws.com/redshift-downloads/amazon-redshift-rsql/1.0.5/AmazonRedshiftRsql-1.0.5.dmg)
+ [RSQL 1.0.4 版](https://s3.amazonaws.com/redshift-downloads/amazon-redshift-rsql/1.0.4/AmazonRedshiftRsql-1.0.4.dmg)
+ [RSQL 1.0.3 版](https://s3.amazonaws.com/redshift-downloads/amazon-redshift-rsql/1.0.3/AmazonRedshiftRsql-1.0.3.dmg)
+ [RSQL 1.0.1 版](https://s3.amazonaws.com/redshift-downloads/amazon-redshift-rsql/1.0.1/AmazonRedshiftRsql-1.0.1.dmg)

**Windows 64 位元 MSI**
+ [RSQL 1.1.1 版](https://s3.amazonaws.com/redshift-downloads/amazon-redshift-rsql/1.1.1/AmazonRedshiftRsql-1.1.1.x86_64.msi)
+ [RSQL 1.1.0 版](https://s3.amazonaws.com/redshift-downloads/amazon-redshift-rsql/1.1.0/AmazonRedshiftRsql-1.1.0.x86_64.msi)
+ [RSQL 1.0.8 版](https://s3.amazonaws.com/redshift-downloads/amazon-redshift-rsql/1.0.8/AmazonRedshiftRsql-1.0.8.x86_64.msi)
+ [RSQL 1.0.7 版](https://s3.amazonaws.com/redshift-downloads/amazon-redshift-rsql/1.0.7/AmazonRedshiftRsql-1.0.7.x86_64.msi)
+ [RSQL 1.0.6 版](https://s3.amazonaws.com/redshift-downloads/amazon-redshift-rsql/1.0.6/AmazonRedshiftRsql-1.0.6.x86_64.msi)
+ [RSQL 1.0.5 版](https://s3.amazonaws.com/redshift-downloads/amazon-redshift-rsql/1.0.5/AmazonRedshiftRsql-1.0.5.msi)
+ [RSQL 1.0.4 版](https://s3.amazonaws.com/redshift-downloads/amazon-redshift-rsql/1.0.4/AmazonRedshiftRsql-1.0.4.msi)
+ [RSQL 1.0.3 版](https://s3.amazonaws.com/redshift-downloads/amazon-redshift-rsql/1.0.3/AmazonRedshiftRsql-1.0.3.msi)
+ [RSQL 1.0.1 版](https://s3.amazonaws.com/redshift-downloads/amazon-redshift-rsql/1.0.1/AmazonRedshiftRsql-1.0.1.msi)

# 使用 Amazon Redshift RSQL 連線至叢集
<a name="rsql-query-tool-starting-tool-connection"></a>

透過 Amazon Redshift，您可以使用 RSQL 連線到叢集並與其互動。這是一種命令列工具，提供了安全的方法來查詢資料、建立資料庫物件及管理 Amazon Redshift 叢集。下列各節將引導您完成在使用和不使用資料來源名稱 (DSN) 搭配 RSQL 的情況下，建立與叢集的連線的步驟。

## 在不使用 DSN 的情況下進行連線
<a name="rsql-query-tool-starting-tool-connection-dsn-less-example"></a>

1. 在 Amazon Redshift 主控台上，選擇要連線到的叢集，並記下端點、資料庫和連接埠。

1. 在命令提示字元中，使用命令列參數指定連線資訊。

   ```
   rsql -h <endpoint> -U <username> -d <databasename> -p <port>
   ```

    這裡會套用下列項目：
   +  *<endpoint>* 是您在前一步驟中記錄的 **Endpoint (端點)**。
   +  *<username>* 是有許可而可以連線至叢集的使用者名稱。
   +  *<databasename>* 是您在前一步驟中記錄的 **Database Name (資料庫名稱)**。
   +  *<port>* 是您在上一個步驟中記錄的**連接埠**。*<port>* 是選用參數。

   範例如下。

   ```
   rsql -h testcluster.example.amazonaws.com -U user1 -d dev -p 5439
   ```

1.  在密碼提示中，輸入 *<username>* 使用者的密碼。

   成功連線的回應看起來如下。

   ```
   % rsql -h testcluster.example.com -d dev -U user1 -p 5349
   Password for user user1:
   DSN-less Connected
   DBMS Name: Amazon Redshift
   Driver Name: Amazon Redshift ODBC Driver
   Driver Version: 1.4.27.1000
   Rsql Version: 1.0.1
   Redshift Version: 1.0.29306
   Type "help" for help.
   
   (testcluster) user1@dev=#
   ```

用來連線的命令在 Linux、Mac OS 和 Windows 上具有相同的參數。

## 在使用 DSN 的情況下進行連線
<a name="rsql-query-tool-starting-tool-connection-dsn-example"></a>

您可以使用 DSN 將 RSQL 連線至 Amazon Redshift，以簡化連線屬性的組織。本主題包含 ODBC 驅動器安裝的指示，以及 DSN 屬性的說明。

### 使用具有密碼的 DSN 連線
<a name="rsql-query-tool-starting-tool-connection-dsn-example-password"></a>

以下示範使用密碼的 DSN 連線組態範例。Mac OSX 的預設 `<path to driver>` 是 `/opt/amazon/redshift/lib/libamazonredshiftodbc.dylib`，Linux 的則是 `/opt/amazon/redshiftodbc/lib/64/libamazonredshiftodbc64.so`。

```
[testuser]
Driver=/opt/amazon/redshiftodbc/lib/64/libamazonredshiftodbc64.so
SSLMode=verify-ca
Min_TLS=1.2
boolsaschar=0
Host=<server endpoint>
Port=<database port>
Database=<dbname>
UID=<username>
PWD=<password>
sslmode=prefer
```

以下輸出來自成功的連線。

```
% rsql -D testuser
DSN Connected
DBMS Name: Amazon Redshift
Driver Name: Amazon Redshift ODBC Driver
Driver Version: 1.4.27.1000
Rsql Version: 1.0.1
Redshift Version: 1.0.29306
Type "help" for help.

(testcluster) user1@dev=#
```

### 使用單一登入 DSN
<a name="rsql-query-tool-starting-tool-connection-dsn"></a>

您可以設定 DSN 以進行單一登入身分驗證。以下示範使用 Okta 單一登入的 DSN 連線組態範例。

```
[testokta]
Driver=<path to driver>
SSLMode=verify-ca
Min_TLS=1.2
boolsaschar=0
Host=<server endpoint>
clusterid=<cluster id>
region=<region name>
Database=<dbname>
locale=en-US
iam=1
plugin_name=<plugin name>
uid=<okta username>
pwd=<okta password>
idp_host=<idp endpoint>
app_id=<app id>
app_name=<app name>
preferred_role=<role arn>
```

成功連線的範例輸出。

```
% rsql -D testokta 
DSN Connected
DBMS Name: Amazon Redshift
Driver Name: Amazon Redshift ODBC Driver
Driver Version: 1.4.27.1000
Rsql Version: 1.0.1
Redshift Version: 1.0.29306
Type "help" for help.

(testcluster) user1@dev=#
```

以下範例示範使用 Azure 單一登入的 DSN 連線組態範例。

```
[testazure]
Driver=<path to driver>
SSLMode=verify-ca
Min_TLS=1.2
boolsaschar=0
Host=<server endpoint>
Port=<cluster port>
clusterid=<cluster id>
region=<region name>
Database=<dbname>
locale=en-us
iam=1
plugin_name=<plugin name>
uid=<azure username>
pwd=<azure password>
idp_tenant=<Azure idp tenant uuid>
client_id=<Azure idp client uuid>
client_secret=<Azure idp client secret>
```

### 搭配 IAM 設定檔使用 DSN 連線
<a name="rsql-query-tool-starting-tool-connection-dsn-iam"></a>

您可以使用所設定的 IAM 設定檔連線到 Amazon Redshift。IAM 設定檔必須具有呼叫 `GetClusterCredentials` 的權限。以下範例示範要使用的 DSN 屬性。只有在 `Host` 不是 Amazon 提供的端點 (例如 `examplecluster.abc123xyz789.us-west-2.redshift.amazonaws.com`) 時，才需要 `ClusterID` 和 `Region` 參數。

```
[testiam]
Driver=Default
Host=testcluster.example.com
Database=dev
DbUser=testuser
ClusterID=rsqltestcluster
Region=us-east-1
IAM=1
Profile=default
```

`Profile` 金鑰的值是您從 CLI AWS 登入資料中選擇的具名設定檔。本範例示範名為 `default` 之設定檔的憑證。

```
$ cat .aws/credentials
[default]
aws_access_key_id = ASIAIOSFODNN7EXAMPLE 
aws_secret_access_key = wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
```

以下示範連線回應。

```
$ rsql -D testiam
DSN Connected
DBMS Name: Amazon Redshift
Driver Name: Amazon Redshift ODBC Driver
Driver Version: 1.4.27.1000
Rsql Version: 1.0.1
Redshift Version: 1.0.29306
Type "help" for help.

(testcluster) testuser@dev=>
```

### 搭配執行個體設定檔使用 DSN 連線
<a name="rsql-query-tool-starting-tool-connection-dsn-instance"></a>

您可以使用 Amazon EC2 執行個體設定檔連線到 Amazon Redshift。執行個體設定檔必須具有呼叫 `GetClusterCredentials` 的權限。如需要使用的 DSN 屬性，請參閱以下範例。只有在 `Host` 不是 Amazon 提供的端點 (例如 `examplecluster.abc123xyz789.us-west-2.redshift.amazonaws.com`) 時，才需要 `ClusterID` 和 `Region` 參數。

```
[testinstanceprofile]
Driver=Default
Host=testcluster.example.com
Database=dev
DbUser=testuser
ClusterID=rsqltestcluster
Region=us-east-1
IAM=1
Instanceprofile=1
```

以下示範連線回應。

```
$ rsql -D testinstanceprofile
DSN Connected
DBMS Name: Amazon Redshift
Driver Name: Amazon Redshift ODBC Driver
Driver Version: 1.4.27.1000
Rsql Version: 1.0.1
Redshift Version: 1.0.29306
Type "help" for help.

(testcluster) testuser@dev=>
```

### 搭配使用 DSN 連線與預設憑證提供者鏈結
<a name="rsql-query-tool-starting-tool-connection-dsn-provider-chain"></a>

若要使用預設登入資料提供者鏈結進行連線，請僅指定 IAM 屬性，Amazon Redshift RSQL 將嘗試按照適用於 Java 的 AWS SDK 中的[使用登入資料中所述的順序取得 AWS 登入](https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/credentials.html)資料。鏈結中至少要有一個提供者必須具有 `GetClusterCredentials` 許可。這對於從 ECS 容器進行連線 (舉例來說) 非常有用。

```
[iamcredentials]
Driver=Default
Host=testcluster.example.com
Database=dev
DbUser=testuser
ClusterID=rsqltestcluster
Region=us-east-1
IAM=1
```

# Amazon Redshift RSQL 中繼命令
<a name="rsql-query-tool-commands"></a>

Amazon Redshift RSQL 中繼命令會傳回有關資料庫或特定資料庫物件的資訊記錄。結果中可以包含各種資料行和中繼資料。其他命令會執行特定動作。這些命令的前面會加上反斜線。

## \$1d[S\$1]
<a name="rsql-query-tool-describe-d"></a>

 列出本機使用者建立的資料表、一般視觀表、晚期繫結視觀表及具體化視觀表。`\dS ` 也會列出資料表和視觀表 (例如 `\d`)，但系統物件包含在傳回的記錄中。`+` 會導致所有列出的物件產生額外的中繼資料資料行 `description`。以下示範執行命令所傳回的範例記錄。

```
List of relations
 schema |   name    | type  |  owner  
--------+-----------+-------+---------
 public | category  | table | awsuser
 public | date      | table | awsuser
 public | event     | table | awsuser
 public | listing   | table | awsuser
 public | sales     | table | awsuser
 public | users     | table | awsuser
 public | venue     | table | awsuser
(7 rows)
```

## \$1d[S\$1] NAME
<a name="rsql-query-tool-describe-s-plus-named"></a>

描述資料表、視觀表或索引。包括資料行名稱和類型。其還會提供 diststyle、備份組態、建立日期 (2018 年 10 月之後建立的資料表) 和限制。例如，`\dS+ sample` 會傳回物件屬性。附加 `S+` 會導致所傳回的記錄中包含額外資料行。

```
Table "public.sample"
 Column |            Type             |   Collation    | Nullable | Default Value | Encoding  | DistKey | SortKey
--------+-----------------------------+----------------+----------+---------------+-----------+---------+---------
 col1   | smallint                    |                | NO       |               | none      | t       | 1
 col2   | character(100)              | case_sensitive | YES      |               | none      | f       | 2
 col3   | character varying(100)      | case_sensitive | YES      |               | text32k   | f       | 3
 col4   | timestamp without time zone |                | YES      |               | runlength | f       | 0
 col5   | super                       |                | YES      |               | zstd      | f       | 0
 col6   | bigint                      |                | YES      |               | az64      | f       | 0

Diststyle: KEY
Backup: YES
Created: 2021-07-20 19:47:27.997045
Unique Constraints:
    "sample_pkey" PRIMARY KEY (col1)
    "sample_col2_key" UNIQUE (col2)
Foreign-key constraints:
    "sample_col2_fkey" FOREIGN KEY (col2) REFERENCES lineitem(l_orderkey)
```

資料表的分佈樣式 (簡稱 *Diststyle*) 可以是 KEY、AUTO、EVEN 或 ALL。

*Backup* 會指出在擷取快照時是否有備份資料表。有效值為 `YES` 或 `NO`。

*Created* 是建立資料表時的時間戳記。建立日期不適用於 2018 年 11 月之前建立的 Amazon Redshift 資料表。在此日期之前建立的資料表會顯示 n/a (不適用)。

*Unique Constraints* 會列出資料表上唯一的和主索引鍵的限制。

*Foreign-key constraints* 會列出資料表上的外部索引鍵限制。

## \$1dC[\$1] [PATTERN]
<a name="rsql-query-tool-describe-dc"></a>

列出轉換。包括來源類型、目標類型，以及轉換是否為隱含。

以下示範 `\dC+` 的結果子集。

```
List of casts
         source type         |         target type         |      function       |   implicit?   | description 
-----------------------------+-----------------------------+---------------------+---------------+-------------
 "char"                      | character                   | bpchar              | in assignment | 
 "char"                      | character varying           | text                | in assignment | 
 "char"                      | integer                     | int4                | no            | 
 "char"                      | text                        | text                | yes           | 
 "path"                      | point                       | point               | no            | 
 "path"                      | polygon                     | polygon             | in assignment | 
 abstime                     | date                        | date                | in assignment | 
 abstime                     | integer                     | (binary coercible)  | no            | 
 abstime                     | time without time zone      | time                | in assignment | 
 abstime                     | timestamp with time zone    | timestamptz         | yes           | 
 abstime                     | timestamp without time zone | timestamp           | yes           | 
 bigint                      | bit                         | bit                 | no            | 
 bigint                      | boolean                     | bool                | yes           | 
 bigint                      | character                   | bpchar              | in assignment | 
 bigint                      | character varying           | text                | in assignment | 
 bigint                      | double precision            | float8              | yes           | 
 bigint                      | integer                     | int4                | in assignment | 
 bigint                      | numeric                     | numeric             | yes           | 
 bigint                      | oid                         | oid                 | yes           | 
 bigint                      | real                        | float4              | yes           | 
 bigint                      | regclass                    | oid                 | yes           | 
 bigint                      | regoper                     | oid                 | yes           | 
 bigint                      | regoperator                 | oid                 | yes           | 
 bigint                      | regproc                     | oid                 | yes           | 
 bigint                      | regprocedure                | oid                 | yes           | 
 bigint                      | regtype                     | oid                 | yes           | 
 bigint                      | smallint                    | int2                | in assignment | 
 bigint                      | super                       | int8_partiql        | in assignment |
```

## \$1dd[S] [PATTERN]
<a name="rsql-query-tool-describe-dds"></a>

顯示其他地方未顯示的物件描述。

## \$1de
<a name="rsql-query-tool-describe-de"></a>

列出外部資料表。這包括 中的資料表 AWS Glue Data Catalog、Hive 中繼存放區和來自 Amazon RDS/Aurora MySQL、Amazon RDS/Aurora PostgreSQL 和 Amazon Redshift 資料共用資料表的聯合資料表。

## \$1de NAME
<a name="rsql-query-tool-describe-de-name"></a>

描述外部資料表。

下列範例顯示 AWS Glue 外部資料表。

```
# \de spectrum.lineitem
                            Glue External table "spectrum.lineitem"
     Column      | External Type | Redshift Type | Position | Partition Key | Nullable
-----------------+---------------+---------------+----------+---------------+----------
 l_orderkey      | bigint        | bigint        | 1        | 0             |
 l_partkey       | bigint        | bigint        | 2        | 0             |
 l_suppkey       | int           | int           | 3        | 0             |
 l_linenumber    | int           | int           | 4        | 0             |
 l_quantity      | decimal(12,2) | decimal(12,2) | 5        | 0             |
 l_extendedprice | decimal(12,2) | decimal(12,2) | 6        | 0             |
 l_discount      | decimal(12,2) | decimal(12,2) | 7        | 0             |
 l_tax           | decimal(12,2) | decimal(12,2) | 8        | 0             |
 l_returnflag    | char(1)       | char(1)       | 9        | 0             |
 l_linestatus    | char(1)       | char(1)       | 10       | 0             |
 l_shipdate      | date          | date          | 11       | 0             |
 l_commitdate    | date          | date          | 12       | 0             |
 l_receiptdate   | date          | date          | 13       | 0             |
 l_shipinstruct  | char(25)      | char(25)      | 14       | 0             |
 l_shipmode      | char(10)      | char(10)      | 15       | 0             |
 l_comment       | varchar(44)   | varchar(44)   | 16       | 0             |

Location: s3://redshiftbucket/kfhose2019/12/31
Input_format: org.apache.hadoop.mapred.TextInputFormat
Output_format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat
Serialization_lib: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
Serde_parameters: {"field.delim":"|","serialization.format":"|"}
Parameters: {"EXTERNAL":"TRUE","numRows":"178196721475","transient_lastDdlTime":"1577771873"}
```

Hive Metastore 資料表。

```
# \de emr.lineitem
                     Hive Metastore External Table "emr.lineitem"
     Column      | External Type | Redshift Type | Position | Partition Key | Nullable
-----------------+---------------+---------------+----------+---------------+----------
 l_orderkey      | bigint        | bigint        | 1        | 0             |
 l_partkey       | bigint        | bigint        | 2        | 0             |
 l_suppkey       | int           | int           | 3        | 0             |
 l_linenumber    | int           | int           | 4        | 0             |
 l_quantity      | decimal(12,2) | decimal(12,2) | 5        | 0             |
 l_extendedprice | decimal(12,2) | decimal(12,2) | 6        | 0             |
 l_discount      | decimal(12,2) | decimal(12,2) | 7        | 0             |
 l_tax           | decimal(12,2) | decimal(12,2) | 8        | 0             |
 l_returnflag    | char(1)       | char(1)       | 9        | 0             |
 l_linestatus    | char(1)       | char(1)       | 10       | 0             |
 l_commitdate    | date          | date          | 11       | 0             |
 l_receiptdate   | date          | date          | 12       | 0             |
 l_shipinstruct  | char(25)      | char(25)      | 13       | 0             |
 l_shipmode      | char(10)      | char(10)      | 14       | 0             |
 l_comment       | varchar(44)   | varchar(44)   | 15       | 0             |
 l_shipdate      | date          | date          | 16       | 1             |

Location: s3://redshiftbucket/cetas
Input_format: org.apache.hadoop.hive.ql.io.parquet.MapredParquetInputFormat
Output_format: org.apache.hadoop.hive.ql.io.parquet.MapredParquetOutputFormat
Serialization_lib: org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe
Serde_parameters: {"serialization.format":"1"}
Parameters: {"EXTERNAL":"TRUE", "numRows":"4307207", "transient_lastDdlTime":"1626990007"}
```

PostgreSQL 外部資料表。

```
# \de pgrsql.alltypes
                                Postgres Federated Table "pgrsql.alltypes"
 Column |        External Type        |        Redshift Type        | Position | Partition Key | Nullable
--------+-----------------------------+-----------------------------+----------+---------------+----------
 col1   | bigint                      | bigint                      | 1        | 0             |
 col2   | bigint                      | bigint                      | 2        | 0             |
 col5   | boolean                     | boolean                     | 3        | 0             |
 col6   | box                         | varchar(65535)              | 4        | 0             |
 col7   | bytea                       | varchar(65535)              | 5        | 0             |
 col8   | character(10)               | character(10)               | 6        | 0             |
 col9   | character varying(10)       | character varying(10)       | 7        | 0             |
 col10  | cidr                        | varchar(65535)              | 8        | 0             |
 col11  | circle                      | varchar(65535)              | 9        | 0             |
 col12  | date                        | date                        | 10       | 0             |
 col13  | double precision            | double precision            | 11       | 0             |
 col14  | inet                        | varchar(65535)              | 12       | 0             |
 col15  | integer                     | integer                     | 13       | 0             |
 col16  | interval                    | varchar(65535)              | 14       | 0             |
 col17  | json                        | varchar(65535)              | 15       | 0             |
 col18  | jsonb                       | varchar(65535)              | 16       | 0             |
 col19  | line                        | varchar(65535)              | 17       | 0             |
 col20  | lseg                        | varchar(65535)              | 18       | 0             |
 col21  | macaddr                     | varchar(65535)              | 19       | 0             |
 col22  | macaddr8                    | varchar(65535)              | 20       | 0             |
 col23  | money                       | varchar(65535)              | 21       | 0             |
 col24  | numeric                     | numeric(38,20)              | 22       | 0             |
 col25  | path                        | varchar(65535)              | 23       | 0             |
 col26  | pg_lsn                      | varchar(65535)              | 24       | 0             |
 col28  | point                       | varchar(65535)              | 25       | 0             |
 col29  | polygon                     | varchar(65535)              | 26       | 0             |
 col30  | real                        | real                        | 27       | 0             |
 col31  | smallint                    | smallint                    | 28       | 0             |
 col32  | smallint                    | smallint                    | 29       | 0             |
 col33  | integer                     | integer                     | 30       | 0             |
 col34  | text                        | varchar(65535)              | 31       | 0             |
 col35  | time without time zone      | varchar(65535)              | 32       | 0             |
 col36  | time with time zone         | varchar(65535)              | 33       | 0             |
 col37  | timestamp without time zone | timestamp without time zone | 34       | 0             |
 col38  | timestamp with time zone    | timestamp with time zone    | 35       | 0             |
 col39  | tsquery                     | varchar(65535)              | 36       | 0             |
 col40  | tsvector                    | varchar(65535)              | 37       | 0             |
 col41  | txid_snapshot               | varchar(65535)              | 38       | 0             |
 col42  | uuid                        | varchar(65535)              | 39       | 0             |
 col43  | xml                         | varchar(65535)              | 40       | 0             |
```

## \$1df[anptw][S\$1] [PATTERN]
<a name="rsql-query-tool-df"></a>

 列出各種類型的函數。例如，命令 `\df` 會傳回函數清單。結果包括名稱、傳回的資料類型、存取權限和其他中繼資料等屬性。函數類型可以包括觸發條件、預存程序、視窗函數和其他類型。當您附加 `S+` 至命令時 (例如 `\dfantS+`)，其中會包括其他中繼資料資料行，例如 `owner`、`security` 和 `access privileges`。

## \$1dL[S\$1] [PATTERN]
<a name="rsql-query-tool-describe-dl"></a>

 列出與資料庫相關聯之程序語言的相關資料。資訊中會包括名稱 (例如 plpgsql) 和其他中繼資料，其中包括其是否受信任、存取權限和描述。例如，範例呼叫是會列出語言及其屬性的 `\dLS+`。當您附加 `S+` 至命令時，其中會包括其他中繼資料資料行，例如 `call handler` 和 `access privileges`。

範例結果：

```
List of languages
   name    | trusted | internal language |      call handler       |                         validator                          | access privileges |          description           
-----------+---------+-------------------+-------------------------+------------------------------------------------------------+-------------------+--------------------------------
 c         | f       | t                 | -                       | fmgr_c_validator(oid)                                      |                   | Dynamically-loaded C functions
 exfunc    | f       | f                 | exfunc_call_handler()   | -                                                          | rdsdb=U/rdsdb     | 
 internal  | f       | t                 | -                       | fmgr_internal_validator(oid)                               |                   | Built-in functions
 mlfunc    | f       | f                 | mlfunc_call_handler()   | -                                                          | rdsdb=U/rdsdb     | 
 plpgsql   | t       | f                 | plpgsql_call_handler()  | plpgsql_validator(oid)                                     |                   | 
 plpythonu | f       | f                 | plpython_call_handler() | plpython_compiler(cstring,cstring,cstring,cstring,cstring) | rdsdb=U/rdsdb     | 
 sql       | t       | t                 | -                       | fmgr_sql_validator(oid)                                    | =U/rdsdb          | SQL-language functions
```

## \$1dm[S\$1] [PATTERN]
<a name="rsql-query-tool-describe-dm"></a>

 列出具體化視觀表。例如，`\dmS+` 會列出具體化視觀表及其屬性。當您附加 `S+` 至命令時，其中會包括其他中繼資料資料行。

## \$1dn[S\$1] [PATTERN]
<a name="rsql-query-tool-describe-dn"></a>

 列出結構描述。當您附加 `S+` 至命令時 (例如 `\dnS+`)，其中會包括其他中繼資料資料行，例如 `description` 和 `access privileges`。

## \$1dp [PATTERN]
<a name="rsql-query-tool-describe-dp"></a>

 列出資料表、視觀表和序列存取權限。

## \$1dt[S\$1] [PATTERN]
<a name="rsql-query-tool-describe-dt"></a>

 列出資料表。當您附加 `S+` 至命令時 (例如 `\dtS+`)，其中會包括其他中繼資料資料行，例如本案例中的 `description`。

## \$1du
<a name="rsql-query-tool-describe-du"></a>

 列出資料庫的使用者。包括其名稱及其角色 (例如超級使用者) 和屬性。

## \$1dv[S\$1] [PATTERN]
<a name="rsql-query-tool-describe-dv"></a>

 列出視觀表。包括結構描述、類型和擁有者資料。當您附加 `S+` 至命令時 (例如 `\dvS+`)，其中會包括其他中繼資料資料行。

## \$1H
<a name="rsql-query-tool-describe-h"></a>

 開啟 HTML 輸出。這對於快速傳回格式化結果非常有用。例如，`select * from sales; \H` 會以 HTML 格式傳回銷售資料表的結果。若要切換回表格式結果，請使用 `\q` 或靜音。

## \$1i
<a name="rsql-query-tool-describe-i"></a>

 從檔案執行命令。例如，假設工作目錄中有 rsql\$1steps.sql，以下內容會執行檔案中的命令：`\i rsql_steps.sql`。

## \$1l[\$1] [PATTERN]
<a name="rsql-query-tool-describe-l"></a>

 列出資料庫。包括擁有者、編碼和其他資訊。

## \$1q
<a name="rsql-query-tool-describe-q"></a>

 結束或 `\q` 命令會登出資料庫工作階段並結束 RSQL。

## \$1sv[\$1] VIEWNAME
<a name="rsql-query-tool-describe-sv-name"></a>

 顯示視觀表的定義。

## \$1timing
<a name="rsql-query-tool-describe-timing"></a>

 例如，顯示查詢的執行時間。

## \$1z [PATTERN]
<a name="rsql-query-tool-describe-z"></a>

 與 \$1dp 相同的輸出。

## \$1?
<a name="rsql-query-tool-help"></a>

 顯示說明資訊。選用參數會指定要解釋的項目。

## \$1EXIT
<a name="rsql-query-tool-flow-control-exit"></a>

 登出所有資料庫工作階段並結束 Amazon Redshift RSQL。此外，您也可以指定選用的結束代碼。例如，`\EXIT 15` 會結束 Amazon Redshift RSQL 終端並傳回結束代碼 15。

以下範例示範從連線輸出以及從 RSQL 結束。

```
% rsql -D testuser
DSN Connected
DBMS Name: Amazon Redshift
Driver Name: Amazon Redshift ODBC Driver
Driver Version: 1.4.34.1000
Rsql Version: 1.0.1
Redshift Version: 1.0.29306 
Type "help" for help.

(testcluster) user1@dev=# \exit 15

% echo $?
15
```

## \$1EXPORT
<a name="rsql-query-tool-export"></a>

 指定 RSQL 用來儲存後續 SQL SELECT 陳述式所傳回之資料庫資訊的匯出檔案名稱。

export\$101.sql

```
\export report file='E:\\accounts.out'
\rset rformat off
\rset width 1500
\rset heading "General Title"
\rset titledashes on
select * from td_dwh.accounts;
\export reset
```

主控台輸出

```
Rformat is off.
Target width is 1500.
Heading is set to: General Title
Titledashes is on.
(exported 40 rows)
```

## \$1LOGON
<a name="rsql-query-tool-flow-control-logon"></a>

 連線至資料庫。您可以使用位置語法或連線字串形式指定連線參數。

命令語法如下：`\logon {[DBNAME|- USERNAME|- HOST|- PORT|- [PASSWORD]] | conninfo}`

`DBNAME` 是所連線的資料庫名稱。`USERNAME` 是連線時所用身分的使用者名稱。預設的 `HOST` 是 `localhost`。預設的 `PORT` 是 `5439`。

在 `\LOGON` 命令中指定主機名稱時，其會變成其他 `\LOGON` 命令的預設主機名稱。若要變更預設主機名稱，請在另外的 `\LOGON` 命令中指定新的 `HOST`。

來自 `user1` 之 `\LOGON` 命令的範例輸出如下。

```
(testcluster) user1@redshiftdb=# \logon dev
DBMS Name: Amazon Redshift
Driver Name: Amazon Redshift ODBC Driver
Driver Version: 1.4.27.1000
Rsql Version: 1.0.1
You are now connected to database "dev" as user "user1".
(testcluster) user1@dev=#
```

*user2* 的範例輸出。

```
(testcluster) user1@dev=# \logon dev user2 testcluster2.example.com
Password for user user2: 
DBMS Name: Amazon Redshift
Driver Name: Amazon Redshift ODBC Driver
Driver Version: 1.4.27.1000
Rsql Version: 1.0.1
You are now connected to database "dev" as user "user2" on host "testcluster2.example.com" at port "5439".
(testcluster2) user2@dev=#
```

## \$1REMARK
<a name="rsql-query-tool-flow-control-remark"></a>

 `\echo` 命令的延伸。`\REMARK` 會將指定字串列印至輸出串流。`\REMARK ` 會透過新增將輸出換行到不同行的能力來延伸 `\echo`。

以下範例示範命令的輸出。

```
(testcluster) user1@dev=# \remark 'hello//world'
hello
world
```

## \$1RSET
<a name="rsql-query-tool-rset"></a>

命令 `\rset` 會設定命令參數和變數。`\rset` 同時具有互動式模式和批次模式。其不支援將選項作為 bash 選項，如 *-x* 或引數，例如 *--<arg>*。

其會設定變數，如下所示：
+ ERRORLEVEL
+ HEADING 和 RTITLE
+ RFORMAT
+ MAXERROR
+ TITLEDASHES
+ WIDTH

以下範例會指定標題。

```
\rset heading "Winter Sales Report"
```

如需更多如何使用 `\rset` 的範例，您可以在 [Amazon Redshift RSQL 變數](rsql-query-tool-variables.md) 主題中找到幾個。

## \$1RUN
<a name="rsql-query-tool-flow-control-run"></a>

 執行指定檔案中包含的 Amazon Redshift RSQL 指令碼。`\RUN` 會透過新增選項來擴展 `\i` 命令，以略過檔案中的標題行。

如果檔案名稱包含逗號、分號或空格，請以單引號將其括住。此外，如果檔案名稱後面有文字，請以引號將其括住。在 UNIX 中，檔案名稱會區分大小寫。在 Windows 中，檔案名稱不區分大小寫。

以下範例示範命令的輸出。

```
(testcluster) user1@dev=# \! cat test.sql
select count(*) as lineitem_cnt from lineitem;
select count(*) as customer_cnt from customer;
select count(*) as orders_cnt from orders;



(testcluster) user1@dev=# \run file=test.sql
 lineitem_cnt
--------------
      4307207
(1 row)

 customer_cnt
--------------
     37796166
(1 row)

 orders_cnt
------------
          0
(1 row)


(testcluster) user1@dev=# \run file=test.sql skip=2
2 records skipped in RUN file.
 orders_cnt
------------
          0
(1 row)
```

## \$1OS
<a name="rsql-query-tool-flow-control-os"></a>

 `\!` 命令的別名。`\OS` 會執行以參數的形式傳遞的作業系統命令。執行命令後，控制項會回到 Amazon Redshift RSQL。例如，您可以執行以下命令來列印目前的系統日期時間，並返回 RSQL 終端：`\os date`。

```
(testcluster) user1@dev=# \os date
Tue Sep 7 20:47:54 UTC 2021
```

## \$1GOTO
<a name="rsql-query-tool-flow-control-goto"></a>

 Amazon Redshift RSQL 的新命令。`\GOTO` 會略過所有中間命令，並在指定的 `\LABEL` 繼續處理。`\LABEL` 必須是前向參照。你不能跳到詞法上在 `\GOTO` 之前的 `\LABEL`。

下面顯示了範例輸出。

```
(testcluster) user1@dev=# \! cat test.sql
select count(*) as cnt from lineitem \gset
select :cnt as cnt;
\if :cnt > 100
    \goto LABELB
\endif

\label LABELA
\remark 'this is label LABELA'
\label LABELB
\remark 'this is label LABELB'


(testcluster) user1@dev=# \i test.sql
   cnt
---------
 4307207
(1 row)

\label LABELA ignored
\label LABELB processed
this is label LABELB
```

## \$1LABEL
<a name="rsql-query-tool-flow-control-label"></a>

 Amazon Redshift RSQL 的新命令。`\LABEL` 會建立用於執行程式的進入點，以作為 `\GOTO` 命令的目標。

以下示範命令的範例輸出。

```
(testcluster) user1@dev=# \! cat test.sql
select count(*) from lineitem limit 5;
\goto LABELB
\remark "this step was skipped by goto label";
\label LABELA
\remark 'this is label LABELA'
\label LABELB
\remark 'this is label LABELB'



(testcluster) user1@dev=# \i testgoto.sql
  count
 4307193
(1 row)

\label LABELA ignored
\label LABELB processed
this is label LABELB
```

## \$1IF (\$1ELSEIF, \$1ELSE, \$1ENDIF)
<a name="rsql-query-tool-flow-control-if"></a>

 `\IF` 和相關命令會有條件地執行輸入指令碼的某些部分。PSQL `\if` (`\elif`、`\else`、`\endif`) 命令的延伸。`\IF` 和 `\ELSEIF` 支援布林運算式，包括 `AND`、`OR` 和 `NOT` 條件。

以下示範命令的範例輸出。

```
(testcluster) user1@dev=# \! cat test.sql
SELECT query FROM stv_inflight LIMIT 1 \gset
select :query as query;
\if :query > 1000000
    \remark 'Query id is greater than 1000000'
\elseif :query = 1000000
    \remark 'Query id is equal than 1000000'
\else
    \remark 'Query id is less than 1000000'
\endif


(testcluster) user1@dev=# \i test.sql 
 query
--------
 994803
(1 row)
 
Query id is less than 1000000
```

在您的分支邏輯中使用 `ERRORCODE`。

```
\if :'ERRORCODE' = '00000'
    \remark 'The statement was executed without error'
\else
    \remark :LAST_ERROR_MESSAGE
\endif
```

在 `\IF` 區塊內使用 `\GOTO` 來控制程式碼的執行方式。

# Amazon Redshift RSQL 變數
<a name="rsql-query-tool-variables"></a>

 某些關鍵字會作為 RSQL 中的變數。您可以將每個關鍵字設定為特定值，或重設該值。大多數關鍵字會使用具有互動式模式和批次模式的 `\rset` 來進行設定。命令可以用小寫或大寫來定義。

## ACTIVITYCOUNT
<a name="rsql-query-tool-activitycount"></a>

 指出上次提交的請求所影響的資料列數目。若為資料傳回請求，這是從資料庫傳回到 RSQL 的資料列數目。此值是 0 或正整數。最大值是 18,446,744,073,709,551,615。

 特殊對待的變數 `ACTIVITYCOUNT` 類似於變數 `ROW_COUNT`。不過，`ROW_COUNT` 不會在 `SELECT`、`COPY` 或 `UNLOAD` 的命令完成時，向用戶端應用程式報告受影響的資料列計數。但 `ACTIVITYCOUNT` 會。

activitycount\$101.sql：

```
select viewname, schemaname
from pg_views
where schemaname = 'not_existing_schema';
\if :ACTIVITYCOUNT = 0
\remark 'views do not exist'
\endif
```

主控台輸出：

```
viewname | schemaname
----------+------------
(0 rows)

views do not exist
```

## ERRORLEVEL
<a name="rsql-query-tool-describe-rset-errorlevel"></a>

指定錯誤的嚴重性等級。使用嚴重性等級可決定行動方式。如果尚未使用 `ERRORLEVEL` 命令，則其值預設會是 `ON`。

errorlevel\$101.sql：

```
\rset errorlevel 42P01 severity 0

select * from tbl;

select 1 as col;

\echo exit
\quit
```

主控台輸出：

```
Errorlevel is on.
rsql: ERROR: relation "tbl" does not exist
(1 row)

col
1

exit
```

## HEADING 和 RTITLE
<a name="rsql-query-tool-describe-rset-heading-rtitle"></a>

可讓使用者指定顯示在報告頂端的標頭。`RSET RTITLE` 命令指定的標頭會自動包含用戶端電腦的目前系統日期。

rset\$1heading\$1rtitle\$102.rsql content：

```
\remark Starting...
\rset rtitle "Marketing Department||Confidential//Third Quarter//Chicago"
\rset width 70
\rset rformat on
select * from rsql_test.tbl_currency order by id limit 2;
\exit
\remark Finishing...
```

主控台輸出：

```
Starting...
Rtitle is set to: &DATE||Marketing Department||Confidential//Third Quarter//Chicago (Changes will take effect after RFORMAT is
switched ON)
Target width is 70.
Rformat is on.
09/11/20       Marketing       Department Confidential
                  Third Quarter
                     Chicago
id  | bankid  | name |      start_date
100 |       1 | USD | 2020-09-11 10:51:39.106905
110 |       1 | EUR | 2020-09-11 10:51:39.106905
(2 rows)

Press any key to continue . . .
```

## MAXERROR
<a name="rsql-query-tool-describe-rset-maxerror"></a>

指定 RSQL 會終止任務處理的最大錯誤嚴重性等級。傳回代碼是 RSQL 在完成每項任務之後傳回給用戶端作業系統的整數值。傳回代碼的值會指出任務的完成狀態。如果指令碼包含的陳述式所產生的錯誤嚴重性等級大於指定的 `maxerror` 值，則 RSQL 會立即結束。因此，若要讓 RSQL 在錯誤嚴重性等級為 8 時結束，請使用 `RSET MAXERROR 7`。

maxerror\$101.sql content：

```
\rset maxerror 0
                        
select 1 as col;

\quit
```

主控台輸出：

```
Maxerror is default.
(1 row)

col
1
```

## RFORMAT
<a name="rsql-query-tool-describe-rset-heading-rformat"></a>

可讓使用者指定是否要套用格式化命令的設定。

rset\$1rformat.rsql content：

```
\remark Starting...
\pset border 2
\pset format wrapped
\pset expanded on
\pset title 'Great Title'
select * from rsql_test.tbl_long where id = 500;
\rset rformat
select * from rsql_test.tbl_long where id = 500;
\rset rformat off
select * from rsql_test.tbl_long where id = 500;
\rset rformat on
select * from rsql_test.tbl_long where id = 500;
\exit
\remark Finishing...
```

主控台輸出：

```
Starting...
Border style is 2. (Changes will take effect after RFORMAT is switched ON)
Output format is wrapped. (Changes will take effect after RFORMAT is switched ON)
Expanded display is on. (Changes will take effect after RFORMAT is switched ON)
Title is "Great Title". (Changes will take effect after RFORMAT is switched ON)
id  |                                                             long_string
500 | In general, the higher the number the more borders and lines the tables will have, but details depend on the particular
format.
(1 row)

Rformat is on.
Great Title
+-[ RECORD 1 ]+----------------------------------------------------------------------------------------------------------------------
-----------+
| id           | 500
|
| long_string | In general, the higher the number the more borders and lines the tables will have, but details depend on the
particular format. |
+-------------+----------------------------------------------------------------------------------------------------------------------
-----------+

Rformat is off.
id  |                                                             long_string
500 | In general, the higher the number the more borders and lines the tables will have, but details depend on the particular format.
(1 row)

Rformat is on.
Great Title
+-[ RECORD 1 ]+----------------------------------------------------------------------------------------------------------------------
-----------+
| id           | 500
|
| long_string | In general, the higher the number the more borders and lines the tables will have, but details depend on the
particular format. |
+-------------+----------------------------------------------------------------------------------------------------------------------
-----------+
Press any key to continue . . .
```

## ROW\$1COUNT
<a name="rsql-query-tool-describe-rset-row_count"></a>

取得受先前查詢影響的記錄數目。其通常用來檢查結果，如下面的程式碼片段：

```
SET result = ROW_COUNT;

IF result = 0
...
```

## TITLEDASHES
<a name="rsql-query-tool-describe-rset-heading-titledashes"></a>

此控制項可讓使用者指定是否要在針對 SQL 陳述式所傳回的資料行資料上方列印一行破折號字元。

範例：

```
\rset titledashes on
select dept_no, emp_no, salary from rsql_test.EMPLOYEE
where dept_no = 100;
\rset titledashes off
select dept_no, emp_no, salary from rsql_test.EMPLOYEE
where dept_no = 100;
```

主控台輸出：

```
dept_no      emp_no          salary
----------- ----------- --------------------
100         1000346        1300.00
100         1000245        5000.00
100         1000262        2450.00

dept_no     emp_no         salary
100         1000346        1300.00
100         1000245        5000.00
100         1000262        2450.00
```

## WIDTH
<a name="rsql-query-tool-describe-rset-heading-width"></a>

將輸出格式設定為換行，並指定報告中每一行的目標寬度。如果沒有參數，則會傳回格式和目標寬度的目前設定。

rset\$1width\$101.rsql content：

```
\echo Starting...
\rset width
\rset width 50
\rset width
\quit
\echo Finishing...
```

主控台輸出：

```
Starting...
Target width is 75.
Target width is 50.
Target width is 50.
Press any key to continue . . .
```

有參數的範例：

```
\echo Starting...
\rset rformat on
\pset format wrapped
select * from rsql_test.tbl_long where id = 500;
\rset width 50
select * from rsql_test.tbl_long where id = 500;
\quit
\echo Finishing...
```

主控台輸出：

```
Starting...
Rformat is on.
Output format is wrapped.
id  |                                          long_string
500 | In general, the higher the number the more borders and lines the ta.
    |.bles will have, but details depend on the particular format.
(1 row)

Target width is 50.
id  |                                          long_string
500 | In general, the higher the number the more.
    |. borders and lines the tables will have, b.
    |.ut details depend on the particular format.
    |..
(1 row)
Press any key to continue . . .
```

# Amazon Redshift RSQL 錯誤代碼
<a name="rsql-query-tool-error-codes"></a>

成功訊息、警告和例外狀況：

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/redshift/latest/mgmt/rsql-query-tool-error-codes.html)

資料例外狀況：

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/redshift/latest/mgmt/rsql-query-tool-error-codes.html)

完整性限制違規：

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/redshift/latest/mgmt/rsql-query-tool-error-codes.html)

# Amazon Redshift RSQL 環境變數
<a name="rsql-query-tool-environment-variables"></a>

 Amazon Redshift RSQL 可以使用環境變數來選取預設的參數值。

## RSPASSWORD
<a name="rsql-query-tool-rspassword"></a>

**重要**  
基於安全考量，不建議您使用此環境變數，因為某些作業系統會允許非系統管理使用者查看處理序環境變數。

 設定 Amazon Redshift RSQL 在連線至 Amazon Redshift 時要使用的密碼。此環境變數需要 Amazon Redshift RSQL 1.0.4 及以上版本。

 如果設定了 RSPASSWORD，RSQL 會優先使用 RSPASSWORD。如果未設定 RSPASSWORD，而且您使用 DSN 進行連線，則 RSQL 會從 DSN 檔案的參數中取得密碼。最後，如果未設定 RSPASSWORD，而且您沒有使用 DSN，則 RSQL 會在嘗試連線後提供密碼提示。

以下是設定 RSPASSWORD 的範例：

```
export RSPASSWORD=TestPassw0rd
```

# 使用身分驗證設定檔連線至 Amazon Redshift
<a name="connecting-with-authentication-profiles"></a>

如果您有許多 Amazon Redshift 連線，則可能難以管理所有連線的設定。每個 JDBC 或 ODBC 連線通常會使用特定的組態選項。透過使用身分驗證設定檔，您可以將連線選項儲存在一起。如此一來，使用者就可以選擇要用來連線的設定檔，而不必管理個別選項的設定。設定檔可以套用至各種案例和使用者類型。

在您建立身分驗證設定檔後，使用者便可以將已可使用的設定檔新增至連線字串。如此一來，其便可以使用每個角色和使用案例的正確設定來連線至 Amazon Redshift。

如需 Amazon Redshift API 資訊，請參閱 [CreateAuthenticationProfile](https://docs.aws.amazon.com/redshift/latest/APIReference/redshift-api.pdf#API_CreateAuthenticationProfile)。

# 建立身分驗證設定檔
<a name="connecting-with-authentication-profiles-creating"></a>

使用 AWS CLI，您可以使用 `create-authentication-profile`命令建立身分驗證設定檔。這會假設您有現有的 Amazon Redshift 叢集和現有的資料庫。您的憑證必須具有可連線至 Amazon Redshift 資料庫的許可，以及可擷取身分驗證設定檔的權限。您可以透過 JSON 字串的形式提供組態選項，也可以參考包含 JSON 字串的檔案。

```
create-authentication-profile --authentication-profile-name<value: String> --authentication-profile-content<value: String>
```

 以下範例會建立名為 `ExampleProfileName` 的設定檔。在這裡，您可以將定義叢集名稱和其他選項設定的金鑰和值新增為 JSON 字串。

```
create-authentication-profile --authentication-profile-name "ExampleProfileName" --authentication-profile-content "{\"AllowDBUserOverride\":\"1\",\"Client_ID\":\"ExampleClientID\",\"App_ID\":\"ExampleAppID\",\"AutoCreate\":false,\"enableFetchRingBuffer\":true,\"databaseMetadataCurrentDbOnly\":true}"
}
```

 此命令會使用指定的 JSON 設定建立設定檔。系統會傳回以下內容，以指出您已建立設定檔。

 `{"AuthenticationProfileName": "ExampleProfileName", "AuthenticationProfileContent": "{\"AllowDBUserOverride\":\"1\",\"Client_ID\":\"ExampleClientID\",\"App_ID\":\"ExampleAppID\",\"AutoCreate\":false,\"enableFetchRingBuffer\":true,\"databaseMetadataCurrentDbOnly\":true}" } ` 

## 建立身分驗證設定檔的限制和配額
<a name="connecting-with-authentication-profiles-limitations"></a>

每位客戶的配額為十 (10) 個身分驗證設定檔。

身分驗證設定檔可能會發生某些錯誤。例如，如果您使用現有名稱建立新的設定檔，或是您超過設定檔配額的話。如需詳細資訊，請參閱 [CreateAuthenticationProfile](https://docs.aws.amazon.com/redshift/latest/APIReference/redshift-api.pdf#API_CreateAuthenticationProfile)。

您無法在身分驗證設定檔存放區中儲存 JDBC、ODBC 和 Python 連線字串的某些選項金鑰和值：
+ `AccessKeyID`
+ `access_key_id`
+ `SecretAccessKey`
+ `secret_access_key_id`
+ `PWD`
+ `Password`
+ `password`

您無法在設定檔存放區中儲存 JDBC 或 ODBC 連線字串的金鑰或值 `AuthProfile`。若為 Python 連線，您無法儲存 `auth_profile`。

身分驗證設定檔存放在 Amazon DynamoDB 中並由 管理 AWS。

# 使用身分驗證設定檔連線
<a name="connecting-with-authentication-profiles-using"></a>

在建立身分驗證設定檔後，便可以在 JDBC 2.0 版 `AuthProfile` 中將設定檔名稱納入為連線選項。使用此連線選項會擷取已儲存的設定。

```
jdbc:redshift:iam://endpoint:port/database?AuthProfile=<Profile-Name>&AccessKeyID=<Caller-Access-Key>&SecretAccessKey=<Caller-Secret-Key>
```

以下是 JDBC URL 字串範例。

```
jdbc:redshift:iam://examplecluster:us-west-2/dev?AuthProfile="ExampleProfile"&AccessKeyID="AKIAIOSFODNN7EXAMPLE"&SecretAccessKey="wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY"
```

在 JDBC URL 中指定 `AccessKeyID` 和 `SecretAccessKey`，以及身分驗證設定檔名稱。

您也可以使用分號分隔符號來分隔組態選項，例如以下範例 (其包含記錄的選項)。

```
jdbc:redshift:iam://my_redshift_end_point:5439/dev?LogLevel=6;LogPath=/tmp;AuthProfile=my_profile;AccessKeyID="AKIAIOSFODNN7EXAMPLE";SecretAccessKey="wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY"
```

**注意**  
 請勿將機密資訊新增至身分驗證設定檔。例如，請勿在身分驗證設定檔中儲存 `AccessKeyID` 或 `SecretAccessKey` 值。身分驗證設定檔存放區具有禁止儲存秘密金鑰的規則。如果您嘗試儲存與敏感資訊相關聯的金鑰和值，就會收到錯誤。

# 取得身分驗證設定檔
<a name="connecting-with-authentication-profiles-getting"></a>

若要列出現有的身分驗證設定檔，請呼叫以下命令。

```
describe-authentication-profiles --authentication-profile-name <value: String>
```

以下範例示範所擷取的兩個設定檔。如果未指定設定檔名稱，則會傳回所有設定檔。

`{ "AuthenticationProfiles": [ { "AuthenticationProfileName": "testProfile1", "AuthenticationProfileContent": "{\"AllowDBUserOverride\":\"1\",\"Client_ID\":\"ExampleClientID\",\"App_ID\":\"ExampleAppID\",\"AutoCreate\":false,\"enableFetchRingBuffer\":true,\"databaseMetadataCurrentDbOnly\":true}" }, { "AuthenticationProfileName": "testProfile2", "AuthenticationProfileContent": "{\"AllowDBUserOverride\":\"1\",\"Client_ID\":\"ExampleClientID\",\"App_ID\":\"ExampleAppID\",\"AutoCreate\":false,\"enableFetchRingBuffer\":true,\"databaseMetadataCurrentDbOnly\":true}" } ] } `

# 針對 Amazon Redshift 中的連線問題進行疑難排解
<a name="troubleshooting-connections"></a>

 如果從 SQL 用戶端工具連接至叢集時有問題，您可以檢查幾個項目來縮小問題的範圍。如果您使用 SSL 或伺服器憑證，對連線問題進行故障排除時，請先移除此複雜度。然後在找到解決方案之後加回來。如需詳細資訊，請參閱[設定連線的安全選項](connecting-ssl-support.md)。

如需 Amazon Redshift 功能中可能影響應用程式的行為變更相關資訊，請參閱 [Amazon Redshift 中的行為變更](behavior-changes.md)。

**重要**  
Amazon Redshift 已變更 SSL 憑證的管理方式。如果您無法使用 SSL 來連接，您可能需要更新目前的信任根 CA 憑證。如需詳細資訊，請參閱[將 SSL 連線轉換為使用 ACM 憑證](connecting-transitioning-to-acm-certs.md)。

 下一節提供連線問題的一些範例錯誤訊息及可能的解決方案。因為不同的 SQL 用戶端工具會提供不同的錯誤訊息，所以這不是完整的清單，但很適合作為問題疑難排解時的起點。

## 從 Amazon EC2 外部進行連線並發生防火牆逾時問題
<a name="connecting-firewall-guidance"></a>



 執行長時間查詢 (例如 COPY 命令) 時，對資料庫的用戶端連線似乎懸置或逾時。在此情況下，您可能會發現 Amazon Redshift 主控台顯示查詢已完成，但用戶端工具本身仍似乎在執行查詢。取決於連線停止的時間，查詢的結果可能遺漏或不完整。

### 可能的解決方案
<a name="connecting-firewall-guidance.Solutions"></a>

從 Amazon EC2 執行個體以外的機器連線到 Amazon Redshift 時，便會發生此問題。在此情況下，閒置連線會在閒置一段時間後，遭到中繼網路元件 (例如防火牆) 終止。當您從虛擬私有網路 (VPN) 或本機網路登入時，這是很典型的行為。

為了避免這些逾時，建議採取下列變更：
+ 提高與 TCP/IP 逾時有關的用戶端系統值。請在您用來連接至叢集的電腦上進行這些變更。應該依您的用戶端和網路來調整逾時期間。如需詳細資訊，請參閱[變更 TCP/IP 逾時設定](#connecting-firewall-guidance.change-tcpip-settings)。
+ (選用) 在 DSN 層級上設定保持連線行為。如需詳細資訊，請參閱[變更 DSN 逾時設定](#connecting-firewall-guidance.change-dsn-settings)。

### 變更 TCP/IP 逾時設定
<a name="connecting-firewall-guidance.change-tcpip-settings"></a>

若要變更 TCP/IP 逾時設定，請根據您用於連接至叢集的作業系統來設定逾時設定。
+ Linux — 如果用戶端在 Linux 上執行，請以根使用者身分執行下列命令，以變更目前工作階段的逾時設定：

  ```
  /sbin/sysctl -w net.ipv4.tcp_keepalive_time=200 net.ipv4.tcp_keepalive_intvl=200 net.ipv4.tcp_keepalive_probes=5
  ```

  若要保留設定，請使用下列值建立或修改 `/etc/sysctl.conf` 檔案，然後重新啟動系統。

  ```
  net.ipv4.tcp_keepalive_time=200
  net.ipv4.tcp_keepalive_intvl=200
  net.ipv4.tcp_keepalive_probes=5
  ```
+ Windows — 如果用戶端在 Windows 上執行，請在 HKEY\$1LOCAL\$1MACHINE\$1SYSTEM\$1CurrentControlSet\$1Services\$1Tcpip\$1Parameters\$1 下編輯下列登錄設定的值：
  + KeepAliveTime：30000
  + KeepAliveInterval：1000
  + TcpMaxDataRetransmissions：10

  這些設定使用 DWORD 資料類型。如果這些設定不存在於登錄路徑下，您可以建立設定並指定這些建議值。如需編輯 Windows 登錄的相關資訊，請參閱 Windows 文件。

  設定這些值之後，請重新啟動電腦以讓變更生效。

 
+ Mac — 如果用戶端在 Mac 上執行，請執行下列命令，以變更目前工作階段的逾時設定：

  ```
  sudo sysctl net.inet.tcp.keepintvl=200000
  sudo sysctl net.inet.tcp.keepidle=200000
  sudo sysctl net.inet.tcp.keepinit=200000
  sudo sysctl net.inet.tcp.always_keepalive=1
  ```

  若要保留設定，請使用下列值建立或修改 `/etc/sysctl.conf` 檔案：

  ```
  net.inet.tcp.keepidle=200000
  net.inet.tcp.keepintvl=200000
  net.inet.tcp.keepinit=200000
  net.inet.tcp.always_keepalive=1
  ```

  重新啟動電腦，然後執行下列命令，以驗證是否已設定這些值。

  ```
  sysctl net.inet.tcp.keepidle
  sysctl net.inet.tcp.keepintvl
  sysctl net.inet.tcp.keepinit
  sysctl net.inet.tcp.always_keepalive
  ```

### 變更 DSN 逾時設定
<a name="connecting-firewall-guidance.change-dsn-settings"></a>

您可以在 DSN 層級上設定保持連線行為 (若選擇這麼做)。在作法上是在 odbc.ini 檔案中新增或修改下列參數：

**KeepAlivesCount**  
在認為連線已中斷之前可遺失的 TCP 保持連線封包數。

**KeepAlivesIdle**  
驅動程式傳送 TCP 保持連線封包之前的閒置秒數。

**KeepAlivesInterval**  
每一次 TCP 保持連線重新傳輸之間的秒數。

如果這些參數不存在，或值為 0，系統會使用指定給 TCP/IP 的保持連線參數，以決定 DSN 保持連線行為。在 Windows 上，您可以在 `HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\` 的登錄中找到 TCP/IP 參數。在 Linux 和 macOS 上，您可以在 sysctl.conf 檔案中找到 TCP/IP 參數。

## 連線遭拒或失敗
<a name="connecting-refusal-failure-issues"></a>

如果您的連線遭拒或失敗，您可能會收到類似下列其中一項的錯誤。
+ 「無法對 *<endpoint>* 建立連線。」
+ 「無法連接至伺服器：連線逾時。伺服器在主機 *'<endpoint>'* 上執行且在連接埠 *'<port>'* 上接受 TCP/IP 連線嗎？」
+ 「連線遭拒。請檢查主機名稱和連接埠正確，且 postmaster 接受 TCP/IP 連線。」

### 可能的解決方案
<a name="connecting-refusal-failure-issues.Solutions"></a>

一般來說，收到錯誤訊息指出無法建立連線時，表示存取叢集的許可有問題，或到達叢集的網路流量有問題。

若要從叢集所在網路外部的用戶端工具連線至叢集，請在叢集的安全群組中新增傳入規則。規則組態取決於 Amazon Redshift 叢集是否建立於虛擬私有雲端 (VPC)：
+ 如果您在以 Amazon VPC 為基礎的虛擬私有雲端 (VPC) 中建立了 Amazon Redshift 叢集，請在 Amazon VPC 中於 VPC 安全群組內新增會指定用戶端 CIDR/IP 地址的傳入規則。如需為叢集設定 VPC 安全群組以及可公開存取選項的相關資訊，請參閱 [VPC 中的 Redshift 資源](managing-clusters-vpc.md)。
+  如果在 VPC 外部建立了 Amazon Redshift 叢集，請在 Amazon Redshift 中將用戶端 CIDR/IP 地址新增至叢集安全群組。如需設定叢集安全群組的相關資訊，請參閱 [Amazon Redshift 安全群組](security-network-isolation.md#working-with-security-groups)。

如果您嘗試從在 Amazon EC2 執行個體上執行的用戶端工具連線至叢集，您也會新增傳入規則。在此情況下，請在叢集安全群組中新增規則。此規則必須指定與用戶端工具的 Amazon EC2 執行個體相關聯的 Amazon EC2 安全群組。

 在某些情況下，您的用戶端與伺服器之間可能有一層，例如防火牆。在這些情況下，請確定防火牆透過您為叢集設定的連接埠接受傳入連線。

## 用戶端和驅動程式不相容
<a name="connecting-architecture-mismatch"></a>

 如果您的用戶端和驅動器不相容，您可能會收到錯誤，指出「指定的 DSN 包含驅動器與應用程式之間的架構不符」。

### 可能的解決方案
<a name="connecting-architecture-mismatch.Solutions"></a>

 當您嘗試連接並得到有關架構不符的錯誤時，這表示用戶端工具和驅動程式不相容。原因是它們的系統架構不相符。例如，假設您有 32 位元用戶端工具，但卻安裝 64 位元版本的驅動程式，就可能發生此錯誤。有時，64 位元用戶端工具可以使用 32 位元驅動程式，但 32 位元應用程式不能搭配 64 位元驅動程式一起使用。請確定驅動程式和用戶端工具使用相同版本的系統架構。

## 查詢似乎沒有回應且有時無法觸達叢集
<a name="connecting-drop-issues"></a>

您遇到查詢完成方面的問題，查詢似乎正在執行，但在 SQL 用戶端工具中無回應。有時，查詢無法出現在叢集，例如系統資料表或 Amazon Redshift 主控台。

### 可能的解決方案
<a name="connecting-drop-issues.Solutions"></a>

 由於封包捨棄，可能發生此問題。在兩個網際網路通訊協定 (IP) 主機之間的網路路徑中，最大傳輸單位 (MTU) 出現差異。MTU 大小決定網路連線上的一個乙太網路訊框中可傳輸的封包大小上限 (位元組)。在 中 AWS，某些 Amazon EC2 執行個體類型支援 1500 的 MTU （乙太網路 v2 訊框），而其他執行個體類型則支援 9001 的 MTU (TCP/IP 巨型訊框）。

 為了避免因為 MTU 大小不同而發生問題，建議採取下列其中一個動作：
+ 如果叢集使用 EC2-VPC 平台，請以傳回 `Destination Unreachable` 的傳入自訂「網際網路控制訊息通訊協定 (ICMP)」規則來設定 Amazon VPC 安全群組。此規則會藉以指示原始主機沿著網路路徑使用最低的 MTU 大小。如需此方法的詳細資訊，請參閱[將安全群組設為允許 ICMP「無法觸達目標」](#configure-custom-icmp)。
+ 如果叢集使用 EC2-Classic 平台，或您無法允許 ICMP 傳入規則，請停用 TCP/IP 巨型訊框，以便使用乙太網路 v2 訊框。如需此方法的詳細資訊，請參閱[設定執行個體的 MTU](#set-mtu)。

### 將安全群組設為允許 ICMP「無法觸達目標」
<a name="configure-custom-icmp"></a>

 在兩個主機之間的網路中，當 MTU 大小出現差異時，首先請確定網路設定並未禁止路徑 MTU 探索 (PMTUD)。PMTUD 可讓接收端主機向原始主機回應下列 ICMP 訊息：`Destination Unreachable: fragmentation needed and DF set (ICMP Type 3, Code 4)`。此訊息指示原始主機沿著網路路徑，使用最低的 MTU 大小來重新傳送請求。如果不這樣協議，可能會因為請求太大，使得接收端主機無法接受，而發生封包捨棄。如需此 ICMP 訊息的相關資訊，請前往*網際網路工程任務組 (IETF)* 網站上的 [RFC792](http://tools.ietf.org/html/rfc792)。

 如果您沒有明確為 Amazon VPC 安全群組設定此 ICMP 傳入規則，則會封鎖 PMTUD。在 中 AWS，安全群組是虛擬防火牆，可指定執行個體傳入和傳出流量的規則。如需 Amazon Redshift 叢集安全群組的相關資訊，請參閱 [Amazon Redshift 安全群組](security-network-isolation.md#working-with-security-groups)。對於使用 EC2-VPC 平台的叢集，Amazon Redshift 會使用 VPC 安全群組來允許或拒絕流量進入叢集。根據預設，安全群組會鎖定並拒絕所有傳入流量。如需如何為 EC2-Classic 或 EC2-VPC 執行個體設定傳入和傳出規則的相關資訊，請參閱《Amazon EC2 使用者指南》**中的 [EC2-Classic 與 VPC 中的執行個體差異](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-classic-platform.html#ec2_classic_platform)。

 如需如何將規則新增至 VPC 安全群組的相關資訊，請參閱[VPC security groups (VPC 安全群組)](managing-vpc-security-groups.md)。如需此規則中所需特定 PMTUD 設定的相關資訊，請參閱《Amazon EC2 使用者指南》**中的[路徑 MTU 探索](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/network_mtu.html#path_mtu_discovery)。

### 設定執行個體的 MTU
<a name="set-mtu"></a>

在某些情況下，您的叢集可能會使用 EC2-Classic 平台，或您無法允許傳入流量的自訂 ICMP 規則。在這些情況下，我們建議您將連線到 Amazon Redshift 叢集之 EC2 執行個體的網路界面 (NIC) 上的 MTU 調整為 1500。此調整會停用 TCP/IP 巨型訊框，以確保連線始終使用相同的封包大小。不過，此選項會完全地降低執行個體的最大網路輸送量，而不只是 Amazon Redshift 的連線而已。如需詳細資訊，請參閱下列程序。<a name="set-mtu-win-os"></a>

**在 Microsoft Windows 作業系統上設定 MTU**

如果用戶端在 Microsoft Windows 作業系統中執行，您可以使用 `netsh` 命令來檢閱並設定乙太網路卡的 MTU 值。

1. 執行下列命令來判斷目前的 MTU 值：

   ```
   netsh interface ipv4 show subinterfaces
   ```

1.  在輸出中檢閱 `MTU` 界面卡的 `Ethernet` 值。

1. 如果值不是 `1500`，請執行下列命令來設定此值：

   ```
   netsh interface ipv4 set subinterface "Ethernet" mtu=1500 store=persistent
   ```

   設定此值之後，請重新啟動電腦以讓變更生效。<a name="set-mtu-linux-os"></a>

**在 Linux 作業系統上設定 MTU**

 如果用戶端在 Linux 作業系統中執行，您可以使用 `ip` 命令來檢閱並設定 MTU 值。

1. 執行下列命令來判斷目前的 MTU 值：

   ```
   $ ip link show eth0
   ```

1. 在輸出中檢閱 `mtu` 後面的值。

1. 如果值不是 `1500`，請執行下列命令來設定此值：

   ```
   $ sudo ip link set dev eth0 mtu 1500
   ```<a name="set-mtu-mac-os"></a>

**在 Mac 作業系統上設定 MTU**
+ 請遵循 macOS 支援網站上有關 的指示`How to change the MTU for troubleshooting purposes`。如需詳細資訊，請搜尋[支援網站](https://support.apple.com)。

## 設定 JDBC 擷取大小參數
<a name="jdbc_fetch_size"></a>

根據預設，Redshift JDBC 驅動程式會使用環形緩衝區來有效管理記憶體，並防止out-of-memory錯誤。擷取大小參數僅適用於明確停用環緩衝區的情況。如需詳細資訊，請檢閱[連結](https://docs.aws.amazon.com/redshift/latest/mgmt/jdbc20-configuration-options.html#jdbc20-enablefetchringbuffer-option)。在此組態中，您應該設定擷取大小，以控制每個批次中要擷取的資料列數量。

在下列情況下使用擷取大小參數：
+ 您需要精細控制以資料列為基礎的批次
+ 使用需要傳統擷取大小行為的舊版應用程式

當環緩衝區停用時，JDBC 驅動程式預設會一次收集查詢的所有結果。傳回大型結果集的查詢可能會耗用過多記憶體。若要以批次而非一次全部擷取結果集，請在應用程式中設定 JDBC 擷取大小參數。

**注意**  
ODBC 不支援擷取大小。

為求最佳效能，請將擷取大小設定為不會導致記憶體不足錯誤的最高值。較低的擷取大小值會造成更多伺服器來回行程，進而延長執行時間。伺服器會預留資源，包括 WLM 查詢位置和關聯的記憶體，直到用戶端擷取整個結果集或查詢取消為止。適當地調校擷取大小時，那些資源會更快速釋出，使得它們可供其他查詢使用。

**注意**  
如果您必須擷取大型資料集，建議使用 [UNLOAD](https://docs.aws.amazon.com/redshift/latest/dg/r_UNLOAD.html) 陳述式來將資料傳輸至 Amazon S3。使用 UNLOAD 時，運算節點會平行運作，以加速資料的傳輸。

如需設定 JDBC 擷取大小參數的相關資訊，請前往 PostgreSQL 文件中的[根據游標取得結果](https://jdbc.postgresql.org/documentation/query/#getting-results-based-on-a-cursor)。