選取您的 Cookie 偏好設定

我們使用提供自身網站和服務所需的基本 Cookie 和類似工具。我們使用效能 Cookie 收集匿名統計資料,以便了解客戶如何使用我們的網站並進行改進。基本 Cookie 無法停用,但可以按一下「自訂」或「拒絕」以拒絕效能 Cookie。

如果您同意,AWS 與經核准的第三方也會使用 Cookie 提供實用的網站功能、記住您的偏好設定,並顯示相關內容,包括相關廣告。若要接受或拒絕所有非必要 Cookie,請按一下「接受」或「拒絕」。若要進行更詳細的選擇,請按一下「自訂」。

在 中使用 CSV 資料 AWS Glue

焦點模式
在 中使用 CSV 資料 AWS Glue - Amazon Athena

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

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

此頁面說明如何使用 AWS Glue ,從每個資料欄的資料值周圍有引號的 CSV 檔案,或從包含標頭值的 CSV 檔案建立結構描述。

處理以引號括住的 CSV 資料

假設 CSV 檔案的資料欄位以雙引號括住,如下列範例所示。

"John","Doe","123-555-1231","John said \"hello\"" "Jane","Doe","123-555-9876","Jane said \"hello\""

若要在 Athena 中對從具有引號值的 CSV 檔案建立的資料表執行查詢,您必須在 中修改資料表屬性 AWS Glue ,以使用 OpenCSVSerDe。如需 OpenCSV SerDe 的詳細資訊,請參閱開啟 CSV SerDe 以處理 CSV

在 AWS Glue 主控台中編輯資料表屬性
  1. 在 AWS Glue 主控台導覽窗格中,選擇資料表

  2. 選擇您想要編輯的資料表連結,然後選擇 Action (動作)、Edit table (編輯資料表)。

  3. Edit table (編輯資料表) 頁面上,進行下列變更:

    • 對於 Serialization lib (序列化程式庫),請輸入 org.apache.hadoop.hive.serde2.OpenCSVSerde

    • 對於 Serde parameters (SerDe 參數),請輸入金鑰 escapeCharquoteChar 以及 separatorChar 的值:

      • 對於 escapeChar,請輸入反斜線 (\)。

      • 對於 quoteChar,請輸入雙引號 (")。

      • 對於 separatorChar,請輸入逗號 (,)。

  4. 選擇 Save (儲存)。

如需詳細資訊,請參閱《AWS Glue 開發人員指南》中的檢視與編輯資料表詳細資訊

您也可以以程式設計方式更新 AWS Glue 資料表屬性。使用 AWS Glue UpdateTable API 操作或 update-table AWS CLI 命令來修改資料表定義中的SerDeInfo區塊,如下列 JSON 範例所示。

"SerDeInfo": { "name": "", "serializationLib": "org.apache.hadoop.hive.serde2.OpenCSVSerde", "parameters": { "separatorChar": "," "quoteChar": "\"" "escapeChar": "\\" } },

使用標頭處理 CSV 檔案

當您在 Athena 中以 CREATE TABLE 陳述式定義資料表時,您可以使用 skip.header.line.count 資料表屬性忽略 CSV 資料中的標頭,如下列範例所示。

... STORED AS TEXTFILE LOCATION 's3://amzn-s3-demo-bucket/csvdata_folder/'; TBLPROPERTIES ("skip.header.line.count"="1")

或者,您也可以事先移除 CSV 標頭,使標頭資訊不包含在 Athena 查詢結果中。可達成此目的的其中一種方法是使用 AWS Glue 任務,它會執行擷取、轉換和載入 (ETL) 工作。您可以使用 PySpark Python 方言延伸 AWS Glue 的語言,在 中編寫指令碼。如需詳細資訊,請參閱《 AWS Glue 開發人員指南》中的在 AWS Glue 中編寫任務

下列範例顯示 AWS Glue 指令碼中的函數,該函數使用 來寫入動態影格from_options,並將writeHeader格式選項設定為 false,這會移除標頭資訊:

glueContext.write_dynamic_frame.from_options(frame = applymapping1, connection_type = "s3", connection_options = {"path": "s3://amzn-s3-demo-bucket/MYTABLEDATA/"}, format = "csv", format_options = {"writeHeader": False}, transformation_ctx = "datasink2")
隱私權網站條款Cookie 偏好設定
© 2025, Amazon Web Services, Inc.或其附屬公司。保留所有權利。