Azure Blob Storage의 데이터에 대량 액세스 예제Examples of Bulk Access to Data in Azure Blob Storage

이 항목은 다음에 적용됩니다.예SQL Server(2017부터)아니요Azure SQL Database아니요Azure SQL Data Warehouse 아니요병렬 데이터 웨어하우스 THIS TOPIC APPLIES TO:yesSQL Server (starting with 2017)noAzure SQL DatabasenoAzure SQL Data Warehouse noParallel Data Warehouse

BULK INSERTOPENROWSET 문은 Azure Blob Storage의 파일에 직접 액세스할 수 있습니다.The BULK INSERT and OPENROWSET statements can directly access a file in Azure blob storage. 다음 예제에서는 newinvoices라는 저장소 계정 및 Week3이라는 컨테이너에 저장된 inv-2017-01-19.csv라는 CSV(쉼표로 구분된 값) 파일의 데이터를 사용합니다.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 Storage에 대량 액세스하려면 적어도 SQL Server 2017SQL Server 2017 CTP 1.1이 필요합니다.Bulk access to Azure blob storage from SQL Server, requires at least SQL Server 2017SQL Server 2017 CTP 1.1.

자격 증명 만들기Create the credential

아래 모든 예제에는 공유 액세스 서명을 참조하는 데이터베이스 범위 자격 증명이 필요합니다.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. 저장소 계정에 대한 공유 액세스 서명을 만들려면 Azure Portal에서 저장소 계정 속성 페이지의 공유 액세스 서명 속성을 참조하세요.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. 공유 액세스 서명에 대한 자세한 내용은 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.

SHARED ACCESS SIGNATURE여야 하는 IDENTITY를 사용하여 데이터베이스 범위 자격 증명을 만듭니다.Create a database scoped credential using the IDENTITY which must be SHARED ACCESS SIGNATURE. Azure Portal의 암호를 사용합니다.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 Storage 위치를 참조하는 CSV 파일 데이터 액세스Accessing data in a CSV file referencing an Azure blob storage location

다음 예제에서는 Azure 저장소 계정을 가리키는 newinvoices라는 외부 데이터 원본을 사용합니다.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 Storage 위치의 컨테이너를 참조하는 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 DATABASE SCOPED CREDENTIAL
CREATE EXTERNAL DATA SOURCE CREATE EXTERNAL DATA SOURCE
BULK INSERT BULK INSERT
OPENROWSETOPENROWSET