Azure BLOB ストレージのデータに一括アクセスする例Examples of Bulk Access to Data in Azure Blob Storage

適用対象: ○SQL Server XAzure SQL Database XAzure SQL Data Warehouse XParallel Data WarehouseAPPLIES TO: yesSQL Server noAzure SQL Database noAzure SQL Data Warehouse noParallel Data Warehouse

BULK INSERT ステートメントと OPENROWSET ステートメントは、Azure BLOB ストレージのファイルに直接アクセスできます。The BULK INSERT and OPENROWSET statements can directly access a file in Azure blob storage. 次の例では、inv-2017-01-19.csv という名前の CSV (コンマ区切り値) ファイルのデータを使用します。このファイルは newinvoices という名前のストレージ アカウントで Week3 という名前のコンテナーに格納されています。The following examples use data from a CSV (comma separated value) file (named inv-2017-01-19.csv), stored in a container (named Week3), stored in a storage account (named newinvoices). ファイルの書式を設定するパスを使用できますが、以下の例には含まれていません。The path to format file can be used, but is not included in these examples.

SQL Server から Azure BLOB ストレージに一括アクセスする場合、SQL Server 2017 (14.x)SQL Server 2017 (14.x) CTP 1.1 以上が必要になります。Bulk access to Azure blob storage from SQL Server, requires at least SQL Server 2017 (14.x)SQL Server 2017 (14.x) CTP 1.1.

重要

コンテナーと BLOB 上のファイルへのパスはすべて、CASE SENSITIVE です。All the paths to the container and to the files on blob are CASE SENSITIVE. 正しくない場合は、"一括読み込みできません。If not correct, it might return error like "Cannot bulk load. ファイル "file.csv" が存在しないか、ファイルへのアクセス権がありません。" などのエラーが返される可能性があります。The file "file.csv" does not exist or you don't have file access rights." ""

資格情報を作成するCreate the credential

下のすべての例で、Shared Access Signature を参照するデータベース スコープ資格情報が必要です。All of the examples below require a database scoped credential referencing a shared access signature.

重要

外部データ ソースは、SHARED ACCESS SIGNATURE ID を使用するデータベース スコープ資格情報で作成する必要があります。The external data source must be created with a database scoped credential that uses the SHARED ACCESS SIGNATURE identity. ストレージ アカウントの Shared Access Signature を作成するには、Azure ポータルのストレージ アカウント プロパティに関するページで Shared Access Signature プロパティを参照してください。To create a shared access signature for your storage account, see the Shared access signature property on the storage account property page, in the Azure portal. Shared Access Signature に関する詳細については、「Shared Access Signature (SAS) を使用」を参照してください。For more information on shared access signatures, see Using Shared Access Signatures (SAS). 資格情報の詳細については、「CREATE DATABASE SCOPED CREDENTIAL」 (データベース スコープ資格情報を作成する) を参照してください。For more information on credentials, see CREATE DATABASE SCOPED CREDENTIAL.

IDENTITY (SHARED ACCESS SIGNATURE に設定します) を利用してデータベース スコープ資格情報を作成します。Create a database scoped credential using the IDENTITY which must be SHARED ACCESS SIGNATURE. Azure ポータルのシークレットを使用します。Use the secret from your Azure portal. 例:For example:

CREATE DATABASE SCOPED CREDENTIAL UploadInvoices  
WITH IDENTITY = 'SHARED ACCESS SIGNATURE',
SECRET = 'QLYMgmSXMklt%2FI1U6DcVrQixnlU5Sgbtk1qDRakUBGs%3D';

Azure BLOB ストレージの場所を参照する CSV ファイルのデータにアクセスするAccessing data in a CSV file referencing an Azure blob storage location

次の例では、newinvoices という名前の Azure ストレージ アカウントを指す外部データ ソースを使用します。The following example uses an external data source pointing to an Azure storage account, named newinvoices.

CREATE EXTERNAL DATA SOURCE MyAzureInvoices
    WITH  (
        TYPE = BLOB_STORAGE,
        LOCATION = 'https://newinvoices.blob.core.windows.net', 
        CREDENTIAL = UploadInvoices  
    );

次に、OPENROWSET ステートメントがコンテナー名 (week3) をファイルの説明に追加します。Then the OPENROWSET statement adds the container name (week3) to the file description. ファイルの名前は inv-2017-01-19.csv です。The file is named inv-2017-01-19.csv.

SELECT * FROM OPENROWSET(
   BULK  'week3/inv-2017-01-19.csv',
   DATA_SOURCE = 'MyAzureInvoices',
   SINGLE_CLOB) AS DataFile;

BULK INSERT を利用し、コンテナーとファイルの説明を使用します。Using BULK INSERT, use the container and file description:

BULK INSERT Colors2
FROM 'week3/inv-2017-01-19.csv'
WITH (DATA_SOURCE = 'MyAzureInvoices',
      FORMAT = 'CSV'); 

Azure BLOB ストレージの場所にあるコンテナーを参照する CSV ファイルのデータにアクセスするAccessing data in a CSV file referencing a container in an Azure blob storage location

次の例では、Azure ストレージ アカウントにあるコンテナー (week3 という名前) を指す外部データ ソースを使用します。The following example uses an external data source pointing to a container (named week3) in an Azure storage account.

CREATE EXTERNAL DATA SOURCE MyAzureInvoicesContainer
    WITH  (
        TYPE = BLOB_STORAGE,
        LOCATION = 'https://newinvoices.blob.core.windows.net/week3', 
        CREDENTIAL = UploadInvoices  
    );

OPENROWSET ステートメントはコンテナー名をファイルの説明に追加しません。Then the OPENROWSET statement does not include the container name in the file description:

SELECT * FROM OPENROWSET(
   BULK  'inv-2017-01-19.csv',
   DATA_SOURCE = 'MyAzureInvoicesContainer',
   SINGLE_CLOB) AS DataFile;

BULK INSERT を利用し、ファイルの説明にコンテナー名を使用しません。Using BULK INSERT, do not use the container name in the file description:

BULK INSERT Colors2
FROM 'inv-2017-01-19.csv'
WITH (DATA_SOURCE = 'MyAzureInvoicesContainer',
      FORMAT = 'CSV'); 

参照See Also

データベース スコープ資格情報を作成する CREATE DATABASE SCOPED CREDENTIAL
外部データ ソースを作成する CREATE EXTERNAL DATA SOURCE
一括挿入 BULK INSERT
OPENROWSETOPENROWSET