OPENROWSET(Transact-SQL)OPENROWSET (Transact-SQL)

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

OLE DB 데이터 원본에서 원격 데이터를 액세스하는 데 필요한 모든 연결 정보를 포함합니다.Includes all connection information that is required to access remote data from an OLE DB data source. 이 방법은 OLE DB를 사용하여 원격 데이터에 연결하고 액세스하는 일회성의 임시 방법이며 연결된 서버에서 테이블을 액세스하는 방법의 대안입니다.This method is an alternative to accessing tables in a linked server and is a one-time, ad hoc method of connecting and accessing remote data by using OLE DB. OLE DB 데이터 원본을 자주 참조하려면 연결된 서버를 사용합니다.For more frequent references to OLE DB data sources, use linked servers instead. 자세한 내용은 연결된 서버(데이터베이스 엔진)를 참조하세요.For more information, see Linked Servers (Database Engine). OPENROWSET 테이블 이름 처럼 쿼리의 FROM 절에 함수를 참조할 수 있습니다.The OPENROWSET function can be referenced in the FROM clause of a query as if it were a table name. OPENROWSET 함수의 대상 테이블로 참조할 수도 있습니다는 INSERT, UPDATE, 또는 DELETE OLE DB 공급자의 기능에 따라 문입니다.The OPENROWSET function can also be referenced as the target table of an INSERT, UPDATE, or DELETE statement, subject to the capabilities of the OLE DB provider. 쿼리는 여러 결과 집합을 반환할 수 있지만 OPENROWSET 첫 번째 것만 반환 합니다.Although the query might return multiple result sets, OPENROWSET returns only the first one.

OPENROWSET또한 읽고 행 집합으로 반환 된 파일의 데이터는 기본 제공 BULK 공급자를 이용한 대량 작업도 지원 합니다.OPENROWSET also supports bulk operations through a built-in BULK provider that enables data from a file to be read and returned as a rowset.

항목 링크 아이콘 Transact-SQL 구문 규칙Topic link icon Transact-SQL Syntax Conventions

구문Syntax


OPENROWSET   
( { 'provider_name' , { 'datasource' ; 'user_id' ; 'password'   
   | 'provider_string' }   
   , {   [ catalog. ] [ schema. ] object   
       | 'query'   
     }   
   | BULK 'data_file' ,   
       { FORMATFILE = 'format_file_path' [ <bulk_options> ]  
       | SINGLE_BLOB | SINGLE_CLOB | SINGLE_NCLOB }  
} )   

<bulk_options> ::=  
   [ , CODEPAGE = { 'ACP' | 'OEM' | 'RAW' | 'code_page' } ]   
   [ , DATASOURCE = 'data_source_name' ]
   [ , ERRORFILE = 'file_name' ]  
   [ , ERRORFILE_DATASOURCE = 'data_source_name' ]   
   [ , FIRSTROW = first_row ]   
   [ , LASTROW = last_row ]   
   [ , MAXERRORS = maximum_errors ]   
   [ , ROWS_PER_BATCH = rows_per_batch ]  
   [ , ORDER ( { column [ ASC | DESC ] } [ ,...n ] ) [ UNIQUE ] ]

   -- bulk_options related to input file format
   [ , FORMAT = 'CSV' ]
   [ , FIELDQUOTE = 'quote_characters']
   [ , FORMATFILE = 'format_file_path' ]   

인수Arguments

'provider_name''provider_name'
레지스트리에 지정된 OLE DB 공급자의 이름(또는 PROGID)을 나타내는 문자열입니다.Is a character string that represents the friendly name (or PROGID) of the OLE DB provider as specified in the registry. provider_name 기본값은 없습니다.provider_name has no default value.

'datasource''datasource'
특정 OLE DB 데이터 원본에 해당되는 문자열 상수입니다.Is a string constant that corresponds to a particular OLE DB data source. 데이터 원본 는 DBPROP_INIT_DATASOURCE 속성 공급자를 초기화 공급자의 IDBProperties 인터페이스를 전달 하도록 합니다.datasource is the DBPROP_INIT_DATASOURCE property to be passed to the IDBProperties interface of the provider to initialize the provider. 일반적으로 이 문자열에는 데이터베이스 파일의 이름, 데이터베이스 서버의 이름 또는 공급자가 데이터베이스의 위치를 알 수 있는 이름이 포함됩니다.Typically, this string includes the name of the database file, the name of a database server, or a name that the provider understands to locate the database or databases.

'user_id''user_id'
지정한 OLE DB 공급자에게 전달되는 사용자 이름을 나타내는 문자열 상수입니다.Is a string constant that is the user name passed to the specified OLE DB provider. user_id 연결에 대 한 보안 컨텍스트를 지정 하 고에서 공급자를 초기화 하 고 DBPROP_AUTH_USERID 속성으로 전달 됩니다.user_id specifies the security context for the connection and is passed in as the DBPROP_AUTH_USERID property to initialize the provider. user_id Microsoft Windows 로그인 이름이 될 수 없습니다.user_id cannot be a Microsoft Windows login name.

'암호''password'
OLE DB 공급자에게 전달되는 사용자 암호를 나타내는 문자열 상수입니다.Is a string constant that is the user password to be passed to the OLE DB provider. 암호 공급자를 초기화할 때 DBPROP_AUTH_PASSWORD 속성으로 전달 됩니다.password is passed in as the DBPROP_AUTH_PASSWORD property when initializing the provider. 암호 Microsoft Windows 암호로 사용할 수 없습니다.password cannot be a Microsoft Windows password.

'provider_string''provider_string'
DBPROP_INIT_PROVIDERSTRING 속성으로 전달되어 OLE DB 공급자를 초기화하는 공급자별 연결 문자열입니다.Is a provider-specific connection string that is passed in as the DBPROP_INIT_PROVIDERSTRING property to initialize the OLE DB provider. provider_string 일반적으로 공급자를 초기화 하는 데 필요한 모든 연결 정보를 캡슐화 합니다.provider_string typically encapsulates all the connection information required to initialize the provider. 인식 되는 키워드 목록은 SQL ServerSQL Server Native Client OLE DB 공급자 참조 초기화 및 권한 부여 속성합니다.For a list of keywords that are recognized by the SQL ServerSQL Server Native Client OLE DB provider, see Initialization and Authorization Properties.

카탈로그catalog
지정한 개체가 있는 카탈로그 또는 데이터베이스의 이름입니다.Is the name of the catalog or database in which the specified object resides.

스키마schema
지정한 개체에 대한 스키마 또는 개체 소유자의 이름입니다.Is the name of the schema or object owner for the specified object.

개체object
작업할 개체를 고유하게 식별하는 개체 이름입니다.Is the object name that uniquely identifies the object to work with.

'쿼리''query'
공급자에게 전달되어 공급자에 의해 실행되는 문자열 상수입니다.Is a string constant sent to and executed by the provider. SQL ServerSQL Server의 로컬 인스턴스는 이 쿼리를 처리하지 않지만 공급자에 의해 반환되는 쿼리 결과(통과 쿼리)는 처리합니다.The local instance of SQL ServerSQL Server does not process this query, but processes query results returned by the provider, a pass-through query. 통과 쿼리는 테이블 형식의 데이터를 테이블 이름을 통해서는 사용할 수 없고 명령 언어를 통해서만 사용할 수 있는 공급자에 대해 사용할 경우 유용합니다.Pass-through queries are useful when used on providers that do not make available their tabular data through table names, but only through a command language. 통과 쿼리는 쿼리 공급자는 OLE DB 명령 개체와 해당 필수 인터페이스를 지 원하는 원격 서버에서 지원 됩니다.Pass-through queries are supported on the remote server, as long as the query provider supports the OLE DB Command object and its mandatory interfaces. 자세한 내용은 참조 SQL Server Native Client ( OLE db) 참조합니다.For more information, see SQL Server Native Client (OLE DB) Reference.

BULKBULK
OPENROWSET의 BULK 행 집합 공급자를 사용하여 파일에서 데이터를 읽습니다.Uses the BULK rowset provider for OPENROWSET to read data from a file. SQL ServerSQL Server에서 OPENROWSET은 데이터를 대상 테이블에 로드하지 않고 데이터 파일에서 읽을 수 있습니다.In SQL ServerSQL Server, OPENROWSET can read from a data file without loading the data into a target table. 이를 통해 간단한 SELECT 문과 함께 OPENROWSET을 사용할 수 있습니다.This lets you use OPENROWSET with a simple SELECT statement.

BULK 옵션의 인수를 사용하면 데이터 읽기의 시작 및 끝 위치, 오류 처리 방법 및 데이터 해석 방법을 효과적으로 제어할 수 있습니다.The arguments of the BULK option allow for significant control over where to start and end reading data, how to deal with errors, and how data is interpreted. 데이터 파일 형식의 단일 행, 단일 열 행 집합으로 읽을 수를 지정할 수는 예를 들어 varbinary, varchar, 또는 nvarchar합니다.For example, you can specify that the data file be read as a single-row, single-column rowset of type varbinary, varchar, or nvarchar. 기본 동작에 대한 설명은 그 다음에 나오는 인수 설명을 따릅니다.The default behavior is described in the argument descriptions that follow.

BULK 옵션 사용법은 이 항목의 뒷부분에 나오는 "주의"를 참조하십시오.For information about how to use the BULK option, see "Remarks," later in this topic. BULK 옵션에 필요한 사용 권한에 대한 자세한 내용은 이 항목의 뒷부분에 나오는 "사용 권한"을 참조하십시오.For information about the permissions that are required by the BULK option, see "Permissions," later in this topic.

참고

전체 복구 모델로 데이터를 가져올 때 OPENROWSET(BULK ...)을 사용하면 로깅이 최적화되지 않습니다.When used to import data with the full recovery model, OPENROWSET (BULK ...) does not optimize logging.

대량 가져오기를 위한 데이터 준비에 대 한 정보를 참조 하세요. 대량 내보내기 또는 가져오기 (에 대 한 데이터 준비 SQL Server ) .For information on preparing data for bulk import, see Prepare Data for Bulk Export or Import (SQL Server).

'data_file''data_file'
대상 테이블에 복사할 데이터가 있는 데이터 파일의 전체 경로입니다.Is the full path of the data file whose data is to be copied into the target table.
적용 대상: SQL Server 2017SQL Server 2017 CTP 1.1.Applies to: SQL Server 2017SQL Server 2017 CTP 1.1.
부터는 SQL Server 2017SQL Server 2017 CTP 1.1는 data_file Azure 블로그 저장소에 있을 수 있습니다.Beginning with SQL Server 2017SQL Server 2017 CTP 1.1, the data_file can be in Azure blog storage. 예제를 보려면 예의 대량 데이터에에서 액세스를 Azure Blob 저장소합니다.For examples, see Examples of Bulk Access to Data in Azure Blob Storage.

<bulk_options ><bulk_options>
BULK 옵션에 대한 하나 이상의 인수를 지정합니다.Specifies one or more arguments for the BULK option.

코드 페이지 = {'ACP' | 'OEM' | '원시' | code_page'을 (를)CODEPAGE = { 'ACP'| 'OEM'| 'RAW'| 'code_page' }
데이터 파일에서 데이터의 코드 페이지를 지정합니다.Specifies the code page of the data in the data file. 코드 페이지와 데이터를 포함 하는 경우에 관련 된 char, varchar, 또는 텍스트 127 보다 크거나 32 보다 작은 문자 값이 있는 열입니다.CODEPAGE is relevant only if the data contains char, varchar, or text columns with character values more than 127 or less than 32.

참고

65001 옵션에는 데이터 정렬/코드 페이지 사양 보다 우선 순위가를 하려는 경우를 제외 하 고 서식 파일의 각 열에 대 한 데이터 정렬 이름의 지정 하는 것이 좋습니다.We recommend that you specify a collation name for each column in a format file, except when you want the 65001 option to have priority over the collation/code page specification.

CODEPAGE 값CODEPAGE value DescriptionDescription
ACPACP 열을 변환 char, varchar, 또는 텍스트 ANSI에서 데이터 형식을 / MicrosoftMicrosoft 를 Windows 코드 페이지 (ISO 1252)는 SQL ServerSQL Server 코드 페이지입니다.Converts columns of char, varchar, or text data type from the ANSI/ MicrosoftMicrosoft Windows code page (ISO 1252) to the SQL ServerSQL Server code page.
OEM(기본값)OEM (default) 열을 변환 char, varchar, 또는 텍스트 를 시스템 OEM 코드 페이지에서 데이터 형식을 SQL ServerSQL Server 코드 페이지입니다.Converts columns of char, varchar, or text data type from the system OEM code page to the SQL ServerSQL Server code page.
RAWRAW 코드 페이지 간 변환이 일어나지 않습니다.No conversion occurs from one code page to another. 가장 빠른 옵션입니다.This is the fastest option.
code_pagecode_page 데이터 파일의 문자 데이터가 인코딩된 원본 코드 페이지(예: 850)를 나타냅니다.Indicates the source code page on which the character data in the data file is encoded; for example, 850.

**중요 한 * \* 이전 버전을 SQL Server 2016SQL Server 2016 코드 페이지 65001 (utf-8 인코딩)을 지원 하지 않습니다.** Important *\* Versions prior to SQL Server 2016SQL Server 2016 do not support code page 65001 (UTF-8 encoding).

ERRORFILE ='file_name'ERRORFILE ='file_name'
형식 오류가 있어 OLE DB 행 집합으로 변환할 수 없는 행을 수집하는 데 사용되는 파일을 지정합니다.Specifies the file used to collect rows that have formatting errors and cannot be converted to an OLE DB rowset. 이러한 행은 데이터 파일에서 "있는 그대로" 이 오류 파일에 복사됩니다.These rows are copied into this error file from the data file "as is."

오류 파일은 명령이 실행될 때 생성됩니다.The error file is created at the start of the command execution. 파일이 이미 있으면 오류가 발생합니다.An error will be raised if the file already exists. 또한 확장명이 .ERROR.txt인 제어 파일이 생성됩니다.Additionally, a control file that has the extension .ERROR.txt is created. 이 파일은 오류 파일의 각 행을 참조하여 오류를 진단합니다.This file references each row in the error file and provides error diagnostics. 오류를 해결한 후에는 데이터를 로드할 수 있습니다.After the errors have been corrected, the data can be loaded.
적용 대상: SQL Server 2017SQL Server 2017 CTP 1.1.Applies to: SQL Server 2017SQL Server 2017 CTP 1.1. 부터는 SQL Server 2017SQL Server 2017, error_file_path Azure 블로그 저장소에 있을 수 있습니다.Beginning with SQL Server 2017SQL Server 2017, the error_file_path can be in Azure blog storage.

' errorfile_data_source_name''errorfile_data_source_name'
적용 대상: SQL Server 2017SQL Server 2017 CTP 1.1.Applies to: SQL Server 2017SQL Server 2017 CTP 1.1. 명명 된 외부 데이터 소스는 가져오기 중 발견 된 오류가 포함 될 오류 파일의 Azure Blob 저장소 위치를 가리킵니다.Is a named external data source pointing to the Azure Blob storage location of the error file that will contain errors found during the import. 외부 데이터 원본을 사용 하 여 만들어야는 TYPE = BLOB_STORAGE 옵션에 추가 된 SQL Server 2017SQL Server 2017 CTP 1.1.The external data source must be created using the TYPE = BLOB_STORAGE option added in SQL Server 2017SQL Server 2017 CTP 1.1. 자세한 내용은 참조 외부 데이터 원본 만들기합니다.For more information, see CREATE EXTERNAL DATA SOURCE.

FIRSTROW =first_rowFIRSTROW =first_row
로드할 첫 번째 행의 번호를 지정합니다.Specifies the number of the first row to load. 기본값은 1입니다.The default is 1. 지정한 데이터 파일의 첫 번째 행을 나타냅니다.This indicates the first row in the specified data file. 행 번호는 행 종결자를 계산하여 결정됩니다.The row numbers are determined by counting the row terminators. FIRSTROW는 1부터 시작합니다.FIRSTROW is 1-based.

LASTROW =last_rowLASTROW =last_row
로드할 마지막 행의 번호를 지정합니다.Specifies the number of the last row to load. 기본값은 0입니다.The default is 0. 지정한 데이터 파일의 마지막 행을 나타냅니다.This indicates the last row in the specified data file.

MAXERRORS =maximum_errorsMAXERRORS =maximum_errors
OPENROWSET에서 예외가 발생하기 전에 나타날 수 있는 구문 오류 또는 서식 파일의 정의와 일치하지 않는 행의 최대 수를 지정합니다.Specifies the maximum number of syntax errors or nonconforming rows, as defined in the format file, that can occur before OPENROWSET throws an exception. MAXERRORS에 도달할 때까지 OPENROWSET은 각각의 잘못된 행을 로드하지 않고 무시하며 잘못된 행을 오류로 간주하여 계산합니다.Until MAXERRORS is reached, OPENROWSET ignores each bad row, not loading it, and counts the bad row as one error.

에 대 한 기본 maximum_errors 은 10입니다.The default for maximum_errors is 10.

참고

MAX_ERRORS는 CHECK 제약 조건 또는 변환에 적용 되지 않습니다 moneybigint 데이터 형식입니다.MAX_ERRORS does not apply to CHECK constraints, or to converting money and bigint data types.

ROWS_PER_BATCH =rows_per_batchROWS_PER_BATCH =rows_per_batch
데이터 파일에 있는 대략적인 데이터 행 수를 지정합니다.Specifies the approximate number of rows of data in the data file. 이 값은 실제 행 수와 순서가 같아야 합니다.This value should be of the same order as the actual number of rows.

OPENROWSET은 데이터 파일을 항상 단일 일괄 처리로 가져옵니다.OPENROWSET always imports a data file as a single batch. 그러나 지정 하는 경우 rows_per_batch 값 > 0 인 쿼리 프로세서는 값을 rows_per_batch 쿼리 계획에 리소스를 할당 하기 위한 힌트로 합니다.However, if you specify rows_per_batch with a value > 0, the query processor uses the value of rows_per_batch as a hint for allocating resources in the query plan.

기본적으로 ROWS_PER_BATCH는 알 수 없습니다.By default, ROWS_PER_BATCH is unknown. ROWS_PER_BATCH = 0을 지정하는 것은 ROWS_PER_BATCH를 생략하는 것과 같습니다.Specifying ROWS_PER_BATCH = 0 is the same as omitting ROWS_PER_BATCH.

순서 ({ [ASC | DESC]} [,... n ] [UNIQUE])ORDER ( { column [ ASC | DESC ] } [ ,... n ] [ UNIQUE ] )
데이터 파일에 있는 데이터의 정렬 방식을 지정하는 선택적 힌트입니다.An optional hint that specifies how the data in the data file is sorted. 기본적으로 대량 작업은 데이터 파일이 정렬되지 않았음을 전제로 합니다.By default, the bulk operation assumes the data file is unordered. 쿼리 최적화 프로그램에서 지정된 순서를 사용하여 보다 효율적인 쿼리 계획을 생성할 수 있다면 성능이 향상될 수 있습니다.Performance might improve if the order specified can be exploited by the query optimizer to generate a more efficient query plan. 정렬을 지정하는 것이 유용한 예는 다음과 같습니다.Examples for when specifying a sort can be beneficial include the following:

  • 클러스터형 인덱스를 포함하는 테이블에 행을 삽입하는 경우. 이 경우 행 집합 데이터가 클러스터형 인덱스 키에 따라 정렬됩니다.Inserting rows into a table that has a clustered index, where the rowset data is sorted on the clustered index key.

  • 다른 테이블과 행 집합을 조인하는 경우. 이 경우 정렬 열과 조인 열이 일치합니다.Joining the rowset with another table, where the sort and join columns match.

  • 정렬 열에 따라 행 집합 데이터를 집계하는 경우Aggregating the rowset data by the sort columns.

  • 쿼리의 FROM 절에서 행 집합을 원본 테이블로 사용하는 경우. 이 경우 정렬 열과 조인 열이 일치합니다.Using the rowset as a source table in the FROM clause of a query, where the sort and join columns match.

    UNIQUE는 데이터 파일에 중복 항목이 포함되지 않도록 지정합니다.UNIQUE specifies that the data file does not have duplicate entries.

    데이터 파일의 실제 행이 지정된 순서에 따라 정렬되지 않거나 UNIQUE 힌트를 지정했는데 중복된 키가 있는 경우 오류가 반환됩니다.If the actual rows in the data file are not sorted according to the order that is specified, or if the UNIQUE hint is specified and duplicates keys are present, an error is returned.

    ORDER를 사용하는 경우 열 별칭이 필요합니다.Column aliases are required when ORDER is used. 열 별칭 목록은 BULK 절에서 액세스되는 파생 테이블을 참조해야 합니다.The column alias list must reference the derived table that is being accessed by the BULK clause. ORDER 절에 지정된 열 이름은 이 열 별칭 목록을 참조합니다.The column names that are specified in the ORDER clause refer to this column alias list. 큰 값 형식 (varchar (max), nvarchar (max), varbinary (max), 및 xml) 및 큰 개체 (LOB) 형식 (텍스트, ntext, 및 이미지) 열을 지정할 수 없습니다.Large value types (varchar(max), nvarchar(max), varbinary(max), and xml) and large object (LOB) types (text, ntext, and image) columns cannot be specified.

    SINGLE_BLOBSINGLE_BLOB
    내용을 반환 data_file 형식의 단일 행, 단일 열 행 집합으로 varbinary (max)합니다.Returns the contents of data_file as a single-row, single-column rowset of type varbinary(max).

중요

SINGLE_BLOB만 모든 Windows 인코딩 변환을 지원하므로 SINGLE_CLOB 및 SINGLE_NCLOB가 아닌 SINGLE_BLOB 옵션만 사용하여 XML 데이터를 가져오는 것이 좋습니다.We recommend that you import XML data only using the SINGLE_BLOB option, rather than SINGLE_CLOB and SINGLE_NCLOB, because only SINGLE_BLOB supports all Windows encoding conversions.

SINGLE_CLOBSINGLE_CLOB
읽어 data_file ASCII로 콘텐츠 형식의 단일 행, 단일 열 행 집합으로 반환 varchar (max), 현재 데이터베이스의 데이터 정렬을 사용 하 여 합니다.By reading data_file as ASCII, returns the contents as a single-row, single-column rowset of type varchar(max), using the collation of the current database.

SINGLE_NCLOBSINGLE_NCLOB
읽어 data_file 유니코드로 콘텐츠 형식의 단일 행, 단일 열 행 집합으로 반환 nvarchar (max), 현재 데이터베이스의 데이터 정렬을 사용 하 여 합니다.By reading data_file as UNICODE, returns the contents as a single-row, single-column rowset of type nvarchar(max), using the collation of the current database.

입력된 파일 형식 옵션입니다.Input file format options

형식 = 'CSV'FORMAT = 'CSV'
적용 대상: SQL Server 2017SQL Server 2017 CTP 1.1.Applies to: SQL Server 2017SQL Server 2017 CTP 1.1.
쉼표로 구분 된 값 파일에 규정 지정는 RFC 4180 표준입니다.Specifies a comma separated values file compliant to the RFC 4180 standard.

FORMATFILE ='format_file_path'FORMATFILE ='format_file_path'
서식 파일의 전체 경로를 지정합니다.Specifies the full path of a format file. SQL ServerSQL Server두 가지 유형의 서식 파일 지원: XML 및 비-XML입니다. supports two types of format files: XML and non-XML.

서식 파일은 결과 집합에서 열 유형을 정의하는 데 필요합니다.A format file is required to define column types in the result set. 단, SINGLE_CLOB, SINGLE_BLOB 또는 SINGLE_NCLOB를 지정한 경우에는 서식 파일이 필요하지 않습니다.The only exception is when SINGLE_CLOB, SINGLE_BLOB, or SINGLE_NCLOB is specified; in which case, the format file is not required.

서식 파일에 대 한 정보를 참조 하세요. 서식 파일 데이터 대량 가져오기 (을 사용 하 여 SQL Server ) .For information about format files, see Use a Format File to Bulk Import Data (SQL Server).

적용 대상: SQL Server 2017SQL Server 2017 CTP 1.1.Applies to: SQL Server 2017SQL Server 2017 CTP 1.1.
부터는 SQL Server 2017SQL Server 2017 CTP 1.1는 format_file_path Azure 블로그 저장소에 있을 수 있습니다.Beginning with SQL Server 2017SQL Server 2017 CTP 1.1, the format_file_path can be in Azure blog storage. 예제를 보려면 예의 대량 데이터에에서 액세스를 Azure Blob 저장소합니다.For examples, see Examples of Bulk Access to Data in Azure Blob Storage.

FIELDQUOTE = 'field_quote'FIELDQUOTE = 'field_quote'
적용 대상: SQL Server 2017SQL Server 2017 CTP 1.1.Applies to: SQL Server 2017SQL Server 2017 CTP 1.1.
CSV 파일의 따옴표 문자로 사용 될 문자를 지정 합니다.Specifies a character that will be used as the quote character in the CSV file. 에 정의 된 대로 인용 문자 (") 따옴표 문자로 사용될지를 지정 하지는 RFC 4180 표준입니다.If not specified, the quote character (") will be used as the quote character as defined in the RFC 4180 standard.

주의Remarks

OPENROWSET원격 데이터에 액세스 하는 데 사용 될 때만 데이터 원본에서 OLE DB는 DisallowAdhocAccess 레지스트리 옵션은 명시적으로 지정된 된 공급자에 대 한 0으로 설정 됩니다 이며 고급 구성 옵션 Ad Hoc Distributed Queries 사용할 수 있습니다.OPENROWSET can be used to access remote data from OLE DB data sources only when the DisallowAdhocAccess registry option is explicitly set to 0 for the specified provider, and the Ad Hoc Distributed Queries advanced configuration option is enabled. 이러한 옵션을 설정하지 않은 경우 기본적으로 임시 액세스가 허용되지 않습니다.When these options are not set, the default behavior does not allow for ad hoc access.

원격 OLE DB 데이터 원본에 액세스할 때 트러스트된 연결의 로그인 ID는 클라이언트가 쿼리 중인 서버에 연결되어 있는 서버에서 자동으로 위임되지 않습니다.When accessing remote OLE DB data sources, the login identity of trusted connections is not automatically delegated from the server on which the client is connected to the server that is being queried. 이 경우 인증 위임을 구성해야 합니다.Authentication delegation must be configured.

OLE DB 공급자가 지정된 데이터 원본에서 여러 카탈로그와 스키마를 지원하는 경우에는 카탈로그 이름과 스키마 이름이 필요합니다.Catalog and schema names are required if the OLE DB provider supports multiple catalogs and schemas in the specified data source. 에 대 한 값 카탈로그스키마 OLE DB 공급자에서 지원 하지 않는 경우 생략할 수 있습니다.Values for catalog and schema can be omitted when the OLE DB provider does not support them. 공급자는 폼의 두 부분으로 된 이름을 스키마 이름만 지 원하는 경우 스키마. 개체 지정 해야 합니다.If the provider supports only schema names, a two-part name of the form schema.object must be specified. 공급자 형식의 세 부분으로 이루어진 이름을 카탈로그 이름만 지 원하는 경우 카탈로그. 스키마. 개체 지정 해야 합니다.If the provider supports only catalog names, a three-part name of the form catalog.schema.object must be specified. 통과 쿼리의 세 부분으로 된 이름을 지정 해야 사용는 SQL ServerSQL Server Native Client OLE DB 공급자입니다.Three-part names must be specified for pass-through queries that use the SQL ServerSQL Server Native Client OLE DB provider. 자세한 내용은 참조 TRANSACT-SQL 구문 표기 규칙 ( Transact SQL ) .For more information, see Transact-SQL Syntax Conventions (Transact-SQL).

OPENROWSET변수를 인수로 받아들이지 않습니다.OPENROWSET does not accept variables for its arguments.

호출에 OPENDATASOURCE, OPENQUERY, 또는 OPENROWSETFROM 절에서에서 평가 됩니다 별도로 고 독립적으로 업데이트를 대상으로 사용 되는 이러한 함수를 호출할 때와 동일한 인수가 두 호출에 제공 되는 경우에 합니다.Any call to OPENDATASOURCE, OPENQUERY, or OPENROWSET in the FROM clause is evaluated separately and independently from any call to these functions used as the target of the update, even if identical arguments are supplied to the two calls. 특히 이러한 호출 중 하나의 결과에 적용되는 필터 또는 조인 조건은 다른 호출의 결과에 영향을 미치지 않습니다.In particular, filter or join conditions applied on the result of one of those calls have no effect on the results of the other.

BULK 옵션이 있는 OPENROWSET 사용Using OPENROWSET with the BULK Option

다음 Transact-SQLTransact-SQL의 향상된 기능은 OPENROWSET(BULK...) 함수를 지원합니다.The following Transact-SQLTransact-SQL enhancements support the OPENROWSET(BULK...) function:

  • 와 함께 사용 되는 FROM 절 SELECT 호출할 수 OPENROWSET(BULK...) 전체 테이블 이름 대신 SELECT 기능입니다.A FROM clause that is used with SELECT can call OPENROWSET(BULK...) instead of a table name, with full SELECT functionality.

    OPENROWSETBULK 옵션에서 범위 변수 또는 별칭이 라고도 상관 관계 이름이 필요는 FROM 절.OPENROWSET with the BULK option requires a correlation name, also known as a range variable or alias, in the FROM clause. 열 별칭을 지정할 수 있습니다.Column aliases can be specified. 열 별칭 목록을 지정하지 않은 경우에는 서식 파일에 반드시 열 이름이 있어야 합니다.If a column alias list is not specified, the format file must have column names. 열 별칭을 지정하면 서식 파일의 열 이름은 무시됩니다. 다음 예를 참조하십시오.Specifying column aliases overrides the column names in the format file, such as:

    FROM OPENROWSET(BULK...) AS table_alias

    FROM OPENROWSET(BULK...) AS table_alias(column_alias,...n)

    중요

    추가할 수는 AS <table_alias> 는 오류가 발생 합니다.Failure to add the AS <table_alias> will result in the error:
    메시지 491, 수준 16, 상태 1, 줄 20Msg 491, Level 16, State 1, Line 20
    FROM 절의 대량 행 집합에 대해 상관 관계 이름을 지정해야 합니다.A correlation name must be specified for the bulk rowset in the from clause.

  • A SELECT...FROM OPENROWSET(BULK...) 문은 파일의 데이터를 직접 쿼리 데이터를 테이블로 가져오지 않고 합니다.A SELECT...FROM OPENROWSET(BULK...) statement queries the data in a file directly, without importing the data into a table. SELECT…FROM OPENROWSET(BULK...)문은 열 이름 및 데이터 형식을 지정 하려면 서식 파일을 사용 하 여 대량 열 별칭을 나열할 수도 있습니다.SELECT…FROM OPENROWSET(BULK...) statements can also list bulk-column aliases by using a format file to specify column names, and also data types.

  • 사용 하 여 OPENROWSET(BULK...) 원본 테이블로 INSERT 또는 MERGE 문을 대량 데이터 파일에서 데이터를 가져오는 SQL ServerSQL Server 테이블입니다.Using OPENROWSET(BULK...) as a source table in an INSERT or MERGE statement bulk imports data from a data file into a SQL ServerSQL Server table. 자세한 내용은 참조 를 사용 하 여 BULK INSERT 또는 openrowset( 하 여 데이터 대량 가져오기 대량... ) ( SQL Server ) .For more information, see Import Bulk Data by Using BULK INSERT or OPENROWSET(BULK...) (SQL Server) .

  • 때는 OPENROWSET BULK 옵션은 함께 사용할 프로그램 INSERT 문, BULK 절은 테이블 힌트를 지원 합니다.When the OPENROWSET BULK option is used with an INSERT statement, the BULK clause supports table hints. 일반적인 외에도 테이블 힌트를 같은 TABLOCK, BULK 절에는 다음과 같은 특수 테이블 힌트도 사용할 수 있습니다: IGNORE_CONSTRAINTS (만 무시는 CHECKFOREIGN KEY 제약 조건), IGNORE_TRIGGERS, KEEPDEFAULTS, 및 KEEPIDENTITY합니다.In addition to the regular table hints, such as TABLOCK, the BULK clause can accept the following specialized table hints: IGNORE_CONSTRAINTS (ignores only the CHECK and FOREIGN KEY constraints), IGNORE_TRIGGERS, KEEPDEFAULTS, and KEEPIDENTITY. 자세한 내용은 테이블 힌트(Transact-SQL)를 참조하세요.For more information, see Table Hints (Transact-SQL).

    사용 하는 방법에 대 한 내용은 INSERT...SELECT * FROM OPENROWSET(BULK...) 참조 대량 가져오기 및 데이터의 내보내기 ( SQL Server ) .For information about how to use INSERT...SELECT * FROM OPENROWSET(BULK...) statements, see Bulk Import and Export of Data (SQL Server). 대량 가져오기로 수행된 행 삽입 작업이 트랜잭션 로그에 기록되는 경우에 대한 자세한 내용은 대량 가져오기의 최소 로깅을 위한 선행 조건을 참조하세요.For information about when row-insert operations that are performed by bulk import are logged in the transaction log, see Prerequisites for Minimal Logging in Bulk Import.

참고

사용 하는 경우 OPENROWSET를 이해 하는 방법을 SQL ServerSQL Server 에서 가장을 처리 합니다.When you use OPENROWSET, it is important to understand how SQL ServerSQL Server handles impersonation. 보안 고려 사항에 대 한 정보를 참조 하십시오. 를 사용 하 여 BULK INSERT 또는 openrowset( 하 여 데이터 대량 가져오기 대량... ) ( SQL Server ) .For information about security considerations, see Import Bulk Data by Using BULK INSERT or OPENROWSET(BULK...) (SQL Server).

SQLCHAR, SQLNCHAR 또는 SQLBINARY 데이터 대량 가져오기Bulk Importing SQLCHAR, SQLNCHAR or SQLBINARY Data

OPENROWSET(BULK...)은 지정되지 않은 경우 SQLCHAR, SQLNCHAR 또는 SQLBINARY 데이터의 최대 길이가 8000바이트를 초과하지 않는다고 가정합니다.OPENROWSET(BULK...) assumes that, if not specified, the maximum length of SQLCHAR, SQLNCHAR or SQLBINARY data does not exceed 8000 bytes. 가져올 데이터를 포함 하는 LOB 데이터 필드에 있으면 varchar (max), nvarchar (max), 또는 varbinary (max) 사용 해야 합니다를 8000 바이트를 초과 하는 개체는 데이터 필드에 대 한 최대 길이 정의 하는 XML 서식 파일If the data being imported is in a LOB data field that contains any varchar(max), nvarchar(max), or varbinary(max) objects that exceed 8000 bytes, you must use an XML format file that defines the maximum length for the data field. 최대 길이를 지정하려면 서식 파일을 편집하고 MAX_LENGTH 특성을 선언합니다.To specify the maximum length, edit the format file and declare the MAX_LENGTH attribute.

참고

자동으로 생성된 서식 파일은 LOB 필드의 길이 또는 최대 길이를 지정하지 않습니다.An automatically generated format file does not specify the length or maximum length for a LOB field. 그러나 직접 서식 파일을 편집하고 길이 또는 최대 길이를 지정할 수 있습니다.However, you can edit a format file and specify the length or maximum length manually.

SQLXML 문서 대량 내보내기 또는 가져오기Bulk Exporting or Importing SQLXML Documents

SQLXML 데이터를 대량으로 내보내거나 가져오려면 서식 파일에서 다음 데이터 형식 중 하나를 사용합니다.To bulk export or import SQLXML data, use one of the following data types in your format file.

데이터 형식Data type 영향Effect
SQLCHAR 또는 SQLVARYCHARSQLCHAR or SQLVARYCHAR 데이터를 클라이언트 코드 페이지나 데이터 정렬에 포함된 코드 페이지로 보냅니다.The data is sent in the client code page or in the code page implied by the collation).
SQLNCHAR 또는 SQLNVARCHARSQLNCHAR or SQLNVARCHAR 데이터를 유니코드로 보냅니다.The data is sent as Unicode.
SQLBINARY 또는 SQLVARYBINSQLBINARY or SQLVARYBIN 데이터를 변환하지 않고 보냅니다.The data is sent without any conversion.

PermissionsPermissions

OPENROWSET권한은 OLE DB 공급자에 전달 되는 사용자 이름의 사용 권한에 의해 결정 됩니다.OPENROWSET permissions are determined by the permissions of the user name that is being passed to the OLE DB provider. 사용 하 여 BULK 옵션을 사용 하려면 ADMINISTER BULK OPERATIONS 권한.To use the BULK option requires ADMINISTER BULK OPERATIONS permission.

Examples

1.A. SELECT 및 SQL Server Native Client OLE DB 공급자와 함께 OPENROWSET 사용Using OPENROWSET with SELECT and the SQL Server Native Client OLE DB Provider

다음 예제에서는 SQL ServerSQL Server Native Client OLE DB 공급자에 액세스 하는 HumanResources.Department 테이블에 AdventureWorks2012AdventureWorks2012 원격 서버의 데이터베이스 Seattle1합니다.The following example uses the SQL ServerSQL Server Native Client OLE DB provider to access the HumanResources.Department table in the AdventureWorks2012AdventureWorks2012 database on the remote server Seattle1. SQLNCLI를 사용하면 SQL ServerSQL Server가 최신 버전의 SQL ServerSQL Server Native Client OLE DB 공급자로 리디렉션됩니다. SELECT 문은 반환되는 행 집합을 정의하는 데 사용됩니다.(Use SQLNCLI and SQL ServerSQL Server will redirect to the latest version of SQL ServerSQL Server Native Client OLE DB Provider.) A SELECT statement is used to define the row set returned. 공급자 문자열에는 ServerTrusted_Connection 키워드가 포함됩니다.The provider string contains the Server and Trusted_Connection keywords. 이러한 키워드에서 인식 되는 SQL ServerSQL Server Native Client OLE DB 공급자입니다.These keywords are recognized by the SQL ServerSQL Server Native Client OLE DB provider.

SELECT a.*  
FROM OPENROWSET('SQLNCLI', 'Server=Seattle1;Trusted_Connection=yes;',  
     'SELECT GroupName, Name, DepartmentID  
      FROM AdventureWorks2012.HumanResources.Department  
      ORDER BY GroupName, Name') AS a;  

2.B. Microsoft OLE DB Provider for Jet 사용Using the Microsoft OLE DB Provider for Jet

다음 예에서는 MicrosoftMicrosoft OLE DB Provider for Jet을 사용하여 MicrosoftMicrosoft Access Customers 데이터베이스의 Northwind 테이블에 액세스합니다.The following example accesses the Customers table in the MicrosoftMicrosoft Access Northwind database through the MicrosoftMicrosoft OLE DB Provider for Jet.

참고

이 예에서는 Access가 설치되어 있다고 가정합니다.This example assumes that Access is installed. 이 예를 실행하려면 Northwind 데이터베이스를 설치해야 합니다.To run this example, you must install the Northwind database.

SELECT CustomerID, CompanyName  
   FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0',  
      'C:\Program Files\Microsoft Office\OFFICE11\SAMPLES\Northwind.mdb';  
      'admin';'',Customers);  
GO  

3.C. INNER JOIN에서 OPENROWSET 및 다른 테이블 사용Using OPENROWSET and another table in an INNER JOIN

다음 예제에서는 모든 데이터를 선택는 Customers 의 로컬 인스턴스에서 테이블 SQL ServerSQL Server Northwind 데이터베이스와는 Orders 테이블 액세스에서 Northwind 동일한 컴퓨터에 저장 된 데이터베이스입니다.The following example selects all data from the Customers table from the local instance of SQL ServerSQL Server Northwind database and from the Orders table from the Access Northwind database stored on the same computer.

참고

이 예에서는 Access가 설치되어 있다고 가정합니다.This example assumes that Access is installed. 이 예를 실행하려면 Northwind 데이터베이스를 설치해야 합니다.To run this example, you must install the Northwind database.

USE Northwind  ;  
GO  
SELECT c.*, o.*  
FROM Northwind.dbo.Customers AS c   
   INNER JOIN OPENROWSET('Microsoft.Jet.OLEDB.4.0',   
   'C:\Program Files\Microsoft Office\OFFICE11\SAMPLES\Northwind.mdb';'admin';'', Orders)      
   AS o   
   ON c.CustomerID = o.CustomerID ;  
GO  

4.D. OPENROWSET를 사용하여 varbinary(max) 열에 파일 데이터 대량 삽입Using OPENROWSET to bulk insert file data into a varbinary(max) column

다음 예에서는 데모용으로 작은 테이블을 만들고 Text1.txt 루트 디렉터리에 있는 C:라는 파일의 파일 데이터를 varbinary(max) 열에 삽입합니다.The following example creates a small table for demonstration purposes, and inserts file data from a file named Text1.txt located in the C: root directory into a varbinary(max) column.

USE AdventureWorks2012;  
GO  
CREATE TABLE myTable(FileName nvarchar(60),   
  FileType nvarchar(60), Document varbinary(max));  
GO  

INSERT INTO myTable(FileName, FileType, Document)   
   SELECT 'Text1.txt' AS FileName,   
      '.txt' AS FileType,   
      * FROM OPENROWSET(BULK N'C:\Text1.txt', SINGLE_BLOB) AS Document;  
GO  

5.E. OPENROWSET BULK 공급자를 서식 파일과 함께 사용하여 텍스트 파일의 행 검색Using the OPENROWSET BULK provider with a format file to retrieve rows from a text file

다음 예에서는 서식 파일을 사용하여 다음 데이터가 들어 있는 탭으로 분리된 텍스트 파일인 values.txt에서 행을 검색합니다.The following example uses a format file to retrieve rows from a tab-delimited text file, values.txt that contains the following data:

1     Data Item 1  
2     Data Item 2  
3     Data Item 3  

서식 파일인 values.fmtvalues.txt의 열을 설명합니다.The format file, values.fmt, describes the columns in values.txt:

9.0  
2  
1  SQLCHAR  0  10 "\t"        1  ID                SQL_Latin1_General_Cp437_BIN  
2  SQLCHAR  0  40 "\r\n"      2  Description        SQL_Latin1_General_Cp437_BIN  

다음은 해당 데이터를 검색하는 쿼리입니다.This is the query that retrieves that data:

SELECT a.* FROM OPENROWSET( BULK 'c:\test\values.txt',   
   FORMATFILE = 'c:\test\values.fmt') AS a;  

6.F. 서식 파일 및 코드 페이지 지정Specifying a format file and code page

다음 예제에서는 서식 파일 및 코드 페이지 옵션 모두 동시에 사용 하는 방법을 보여 줍니다.The following example show how to use both the format file and code page options at the same time.

INSERT INTO MyTable SELECT a.* FROM  
OPENROWSET (BULK N'D:\data.csv', FORMATFILE =   
    'D:\format_no_collation.txt', CODEPAGE = '65001') AS a;  

7.G. 서식 파일을 사용 하는 CSV 파일에서 데이터에 액세스Accessing data from a CSV file with a format file

적용 대상: SQL Server 2017SQL Server 2017 CTP 1.1.Applies to: SQL Server 2017SQL Server 2017 CTP 1.1.

SELECT *
FROM OPENROWSET(BULK N'D:\XChange\test-csv.csv',
    FORMATFILE = N'D:\XChange\test-csv.fmt', 
    FIRSTROW=2, 
    FORMAT='CSV') AS cars;  

8.H. 서식 파일 없이 CSV 파일에서 데이터에 액세스Accessing data from a CSV file without a format file

SELECT * FROM OPENROWSET(
   BULK 'C:\Program Files\Microsoft SQL Server\MSSQL14.CTP1_1\MSSQL\DATA\inv-2017-01-19.csv',
   SINGLE_CLOB) AS DATA;

9.I. Azure Blob 저장소에 저장 된 파일에서 데이터에 액세스Accessing data from a file stored on Azure Blob storage

적용 대상: SQL Server 2017SQL Server 2017 CTP 1.1.Applies to: SQL Server 2017SQL Server 2017 CTP 1.1.
다음 예제에서는 Azure 저장소 계정 및 공유 액세스 서명을 생성 하는 데이터베이스 범위 자격 증명에서 컨테이너를 가리키는 외부 데이터 원본을 사용 합니다.The following example uses an external data source that points to a container in an Azure storage account and a database scoped credential created for a shared access signature.

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

에 대 한 완료 OPENROWSET 자격 증명 및 외부 데이터 원본을 구성 하는 등 예제 참조 예의 대량 데이터에에서 액세스를 Azure Blob 저장소합니다.For complete OPENROWSET examples including configuring the credential and external data source, see Examples of Bulk Access to Data in Azure Blob Storage.

추가 예Additional Examples

사용 하 여 보여 주는 추가 예에 대 한 INSERT...SELECT * FROM OPENROWSET(BULK...), 다음 항목을 참조 합니다.For additional examples that show using INSERT...SELECT * FROM OPENROWSET(BULK...), see the following topics:

관련 항목:See Also

DELETE(Transact-SQL) DELETE (Transact-SQL)
FROM(Transact-SQL) FROM (Transact-SQL)
데이터 대량 가져오기 및 내보내기(SQL Server) Bulk Import and Export of Data (SQL Server)
INSERT(Transact-SQL) INSERT (Transact-SQL)
OPENDATASOURCE(Transact-SQL) OPENDATASOURCE (Transact-SQL)
OPENQUERY ( Transact SQL ) OPENQUERY (Transact-SQL)
행 집합 함수 ( Transact SQL ) Rowset Functions (Transact-SQL)
SELECT(Transact-SQL) SELECT (Transact-SQL)
sp_addlinkedserver(Transact-SQL) sp_addlinkedserver (Transact-SQL)
sp_serveroption( Transact SQL ) sp_serveroption (Transact-SQL)
UPDATE(Transact-SQL) UPDATE (Transact-SQL)
여기서 ( Transact SQL )WHERE (Transact-SQL)