メインコンテンツまでスキップ

インスタンスプロファイルで COPY INTO を使用してデータをロードします

この記事では、 COPY INTO コマンドを使用して、AWS アカウントの Amazon S3 バケットから Databricks SQL のテーブルにデータをロードする方法について説明します。

この記事の手順では、管理者がSQL AWSインスタンスプロファイルを使用するように ウェアハウスを構成し、 でソース ファイルにアクセスできるようにしていることを前提としています。S3Unity Catalog管理者がストレージ資格情報を使用して 外部ロケーションを構成した場合は、代わりにCOPY INTOUnity Catalogボリュームまたは外部ロケーションを使用して データを読み込む を参照してください。管理者から一時的な認証情報 (AWS アクセスキー ID、シークレットキー、セッショントークン) が提供された場合は、代わりに 一時的な認証情報を使用して COPY INTO を使用してデータをロード するを参照してください。

Databricks では、Databricks SQL での増分データ読み込みと一括データ読み込みに COPY INTO コマンドを使用することをお勧めします。

注記

COPY INTO 何千ものファイルを含むデータソースに適しています。 Databricks では、何百万ものファイルを読み込むために Auto Loader を使用することをお勧めしますが、これは 1 ではサポートされていませんDatabricks SQL。

始める前に

Databricks にデータを読み込む前に、次のものがあることを確認してください。

  • S3 のデータへのアクセス。 管理者はまず、「 インジェスト用のデータ アクセスを構成する 」の手順を完了して、Databricks SQL ウェアハウスがソース ファイルを読み取れるようにする必要があります。
  • 管理者が作成したインスタンスプロファイルを使用する Databricks SQL ウェアハウス。
  • SQLウェアハウスに対する[管理可能] アクセス許可。
  • 完全修飾 S3 URI。
  • Databricks SQL ユーザー インターフェイスに精通している。

ステップ 1: クラウド ストレージ内のデータへのアクセスを確認する

クラウド・オブジェクト・ストレージ内の正しいデータにアクセスできることを確認するには、以下の操作を行います。

  1. サイドバーで、「 クエリを作成」> をクリックします。

  2. SQL エディターのメニュー バーで、SQLウェアハウスを選択します。

  3. SQL エディターで、次のコードを貼り付けます。

    select * from csv.<path>

    <path> を管理者から受け取った S3 URI に置き換えます。たとえば、 s3://<bucket>/<folder>/.

  4. 実行 をクリックします。

ステップ 2: テーブルを作成する

この手順では、受信データを保持するためのテーブルを Databricks ワークスペースに作成する方法について説明します。

  1. SQL エディターで、次のコードを貼り付けます。

    SQL
    CREATE TABLE <catalog_name>.<schema_name>.<table_name> (
    tpep_pickup_datetime TIMESTAMP,
    tpep_dropoff_datetime TIMESTAMP,
    trip_distance DOUBLE,
    fare_amount DOUBLE,
    pickup_zip INT,
    dropoff_zip INT
    );
  2. 実行 をクリックします。

ステップ3:クラウドストレージからテーブルにデータをロードする

この手順では、S3 バケットから Databricks ワークスペースで作成したテーブルにデータを読み込む方法について説明します。

  1. サイドバーで、「 クエリを作成」> をクリックします。

  2. SQL エディターのメニュー バーで、SQLウェアハウスを選択し、SQLウェアハウスが実行されていることを確認します。

  3. SQL エディターで、次のコードを貼り付けます。 このコードでは、以下を置き換えます。

    • <s3-bucket> を S3 バケットの名前に置き換えます。
    • <folder> を S3 バケット内のフォルダの名前に置き換えます。
    SQL
    COPY INTO <catalog-name>.<schema-name>.<table-name>
    FROM 's3://<s3-bucket>/<folder>/'
    FILEFORMAT = CSV
    FORMAT_OPTIONS (
    'header' = 'true',
    'inferSchema' = 'true'
    )
    COPY_OPTIONS (
    'mergeSchema' = 'true'
    );

    SELECT * FROM <catalog_name>.<schema_name>.<table_name>;
注記

FORMAT_OPTIONS FILEFORMATによって異なります。この場合、 header オプションは CSV ファイルの最初の行をヘッダーとして扱うように Databricks に指示し、 inferSchema オプションは CSV ファイルの各フィールドのデータ型を自動的に決定するように Databricks に指示します。

  1. 実行 をクリックします。
注記

もう一度 [実行 ] をクリックすると、新しいデータはテーブルに読み込まれません。 これは、 COPY INTO コマンドが新しいデータと見なされるもののみを処理するためです。

クリーンアップします

ワークスペース内の関連付けられているリソースを保持する必要がなくなった場合は、クリーンアップできます。

テーブルの削除

  1. サイドバーで、「 クエリを作成」> をクリックします。

  2. SQLウェアハウスを選択し、SQLウェアハウスが実行されていることを確認します。

  3. 次のコードを貼り付けます。

    SQL
    DROP TABLE <catalog-name>.<schema-name>.<table-name>;
  4. 実行 をクリックします。

  5. このクエリのタブにカーソルを合わせ、[ X ] アイコンをクリックします。

SQL エディターでクエリを削除する

  1. サイドバーで、「 SQL エディター 」をクリックします。
  2. SQL エディターのメニュー バーで、このチュートリアル用に作成した各クエリのタブにカーソルを合わせ、[ X ] アイコンをクリックします。

追加のリソース