Excel에서 SQL Server 또는 Azure SQL Database로 데이터 가져오기Import data from Excel to SQL Server or Azure SQL Database

Excel 파일에서 SQL Server 또는 Azure SQL Database로 데이터를 가져오는 여러 가지 방법이 있습니다.There are several ways to import data from Excel files to SQL Server or to Azure SQL Database. 이 문서에서는 이러한 각 옵션을 대해 요약하고 자세한 지침에 대한 링크를 제공합니다.This article summarizes each of these options and provides links to more detailed instructions.

  • 다음 도구 중 하나를 사용하여 Excel에서 SQL로 한 단계만 거쳐 데이터를 가져올 수 있습니다.You can import data in a single step from Excel to SQL by using one of the following tools:
    • SQL Server 가져오기 및 내보내기 마법사The SQL Server Import and Export Wizard
    • SSIS(SQL Server Integration Services)SQL Server Integration Services (SSIS)
    • OPENROWSET 함수The OPENROWSET function
  • 데이터를 텍스트 형식으로 저장하고 다음 도구 중 하나를 사용하여 두 단계를 거쳐 데이터를 가져올 수 있습니다.You can import data in two steps by saving your data as text, and then using one of the following tools:
    • BULK INSERT 문The BULK INSERT statement
    • BCPBCP
    • Azure Data FactoryAzure Data Factory

중요

SSIS 또는 Azure Data Factory와 같은 복잡한 도구 및 서비스에 대한 자세한 설명은 개요 범위에 포함되지 않습니다.A complete description of complex tools and services like SSIS or Azure Data Factory is beyond the scope of this overview. 관심 있는 솔루션에 대한 자세한 내용을 알아보려면 제공된 링크로 이동하세요.To learn more about the solution that interests you, follow the links provided for more info.

SQL Server 가져오기 및 내보내기 마법사SQL Server Import and Export Wizard

SQL Server 가져오기 및 내보내기 마법사의 페이지를 단계별로 실행하여 Excel 파일에서 직접 데이터를 가져옵니다.Import data directly from Excel files by stepping through the pages of the SQL Server Import and Export Wizard. 필요에 따라 가져오기/내보내기 설정을 SQL Server Integration Services(SSIS) 패키지로 저장하여 사용자 지정 및 다시 사용할 수 있습니다.Optionally, save the import/export settings as a SQL Server Integration Services (SSIS) package that you can customize and reuse.

Excel 데이터 원본에 연결

Excel에서 SQL Server로 가져오기 위해 마법사를 사용한 예제를 보려면 가져오기 및 내보내기 마법사의 이 간단한 예제 시작을 참조하세요.For an example of using the wizard to import from Excel to SQL Server, see Get started with this simple example of the Import and Export Wizard.

SSIS(SQL Server Integration Services)SQL Server Integration Services (SSIS)

SSIS에 익숙하여 SQL Server 가져오기 및 내보내기 마법사가 실행되지 않게 하려면 Excel 원본 및 데이터 흐름에서 SQL Server 대상을 사용하는 SSIS 패키지를 만듭니다.If you're familiar with SSIS and don't want to run the SQL Server Import and Export Wizard, create an SSIS package that uses the Excel Source and the SQL Server Destination in the data flow.

데이터 흐름의 구성 요소

이러한 SSIS 구성 요소에 대한 자세한 내용은 다음 항목을 참조하세요.For more info about these SSIS components, see the following topics:

SSIS 패키지를 작성하는 방법을 알아보려면 ETL 패키지를 만드는 방법 자습서를 참조하세요.To start learning how to build SSIS packages, see the tutorial How to Create an ETL Package.

OPENROWSET 및 연결된 서버OPENROWSET and linked servers

참고

Excel 데이터 원본에 연결하는 ACE 공급자(이전의 Jet 공급자)는 대화형 클라이언트 쪽 사용을 위한 것입니다.The ACE provider (formerly the Jet provider) that connects to Excel data sources is intended for interactive client-side use. 자동화 프로세스 또는 병렬로 실행되는 프로세스에서 특히 서버의 ACE 공급자를 사용하는 경우 예기치 않은 결과가 발생할 수 있습니다.If you use the ACE provider on the server, especially in automated processes or processes running in parallel, you may see unexpected results.

분산 쿼리Distributed queries

Transact-SQL OPENROWSET 또는 OPENDATASOURCE 기능을 사용하여 Excel 파일에서 데이터를 직접 가져옵니다.Import data directly from Excel files by using the Transact-SQL OPENROWSET or OPENDATASOURCE function. 이 사용법을 분산 쿼리라고 합니다.This usage is called a distributed query.

분산 커리를 실행하려면 다음 예제에 나온 것과 같이 먼저 ad hoc distributed queries 서버 구성 옵션을 사용하도록 설정해야 합니다.Before you can run a distributed query, you have to enable the ad hoc distributed queries server configuration option, as shown in the following example. 자세한 내용은 임시 분산 쿼리 서버 구성 옵션을 참조하세요.For more info, see ad hoc distributed queries Server Configuration Option.

sp_configure 'show advanced options', 1;
RECONFIGURE;
GO
sp_configure 'Ad Hoc Distributed Queries', 1;
RECONFIGURE;
GO

다음 코드 샘플은 OPENROWSET을 사용하여 Excel Data 워크시트의 데이터를 새 데이터베이스 테이블로 가져옵니다.The following code sample uses OPENROWSET to import the data from the Excel Data worksheet into a new database table.

USE ImportFromExcel;
GO
SELECT * INTO Data_dq
FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0',
    'Excel 12.0; Database=D:\Desktop\Data.xlsx', [Data$]);
GO

다음은 OPENDATASOURCE와 같은 예제입니다.Here's the same example with OPENDATASOURCE.

USE ImportFromExcel;
GO
SELECT * INTO Data_dq
FROM OPENDATASOURCE('Microsoft.ACE.OLEDB.12.0',
    'Data Source=D:\Desktop\Data.xlsx;Extended Properties=Excel 12.0')...[Data$];
GO

가져온 데이터를 새 테이블을 만들지 않고 기존 테이블에 추가하려면 앞의 예제에서 사용된 SELECT ... INTO ... FROM ... 구문 대신에 INSERT INTO ... SELECT ... FROM ... 구문을 사용합니다.To append the imported data to an existing table instead of creating a new table, use the INSERT INTO ... SELECT ... FROM ... syntax instead of the SELECT ... INTO ... FROM ... syntax used in the preceding examples.

Excel 데이터를 가져오지 않고 쿼리를 사용하려면 표준 SELECT ... FROM ... 구문을 사용하면 됩니다.To query the Excel data without importing it, just use the standard SELECT ... FROM ... syntax.

분산 쿼리에 대한 자세한 내용은 다음 항목을 참조하세요.For more info about distributed queries, see the following topics:

연결된 서버Linked servers

Excel 파일을 연결된 서버로 영구 연결을 구성할 수도 있습니다.You can also configure a persistent connection to the Excel file as a linked server. 다음 예제에서는 기존의 Excel 연결된 서버 EXCELLINK에 있는 Data 워크시트에서 Data_ls라는 새 데이터베이스 테이블로 데이터를 가져옵니다.The following example imports the data from the Data worksheet on the existing Excel linked server EXCELLINK into a new database table named Data_ls.

USE ImportFromExcel;
GO
SELECT * INTO Data_ls FROM EXCELLINK...[Data$];
GO

다음 예제에 나온 것과 같이 SQL Server Management Studio에서 연결된 서버 또는 시스템 저장 프로시저 sp_addlinkedserver를 실행하여 연결된 서버를 만들 수 있습니다.You can create a linked server from SQL Server Management Studio, or by running the system stored procedure sp_addlinkedserver, as shown in the following example.

DECLARE @RC int

DECLARE @server     nvarchar(128)
DECLARE @srvproduct nvarchar(128)
DECLARE @provider   nvarchar(128)
DECLARE @datasrc    nvarchar(4000)
DECLARE @location   nvarchar(4000)
DECLARE @provstr    nvarchar(4000)
DECLARE @catalog    nvarchar(128)

-- Set parameter values
SET @server =     'EXCELLINK'
SET @srvproduct = 'Excel'
SET @provider =   'Microsoft.ACE.OLEDB.12.0'
SET @datasrc =    'D:\Desktop\Data.xlsx'
SET @provstr =    'Excel 12.0'

EXEC @RC = [master].[dbo].[sp_addlinkedserver] @server, @srvproduct, @provider,
@datasrc, @location, @provstr, @catalog

연결된 서버에 대한 자세한 내용은 다음 항목을 참조하세요.For more info about linked servers, see the following topics:

연결된 서버 및 분산 쿼리 모두에 대한 정보 및 예제는 다음 항목을 참조하세요.For more examples and info about both linked servers and distributed queries, see the following topics:

필수 구성 요소 - Excel 데이터를 텍스트로 저장Prerequisite - Save Excel data as text

이 페이지에 설명된 나머지 방법(BULK INSERT 문, BCP 도구 또는 Azure Data Factory 등)을 사용하려면 먼저 Excel 데이터를 텍스트 파일로 내보내야 합니다.To use the rest of the methods described on this page - the BULK INSERT statement, the BCP tool, or Azure Data Factory - first you have to export your Excel data to a text file.

Excel에서 파일 | 다른 이름으로 저장을 선택한 다음, 텍스트(탭으로 구분)(*.txt) 또는 CSV(쉼표로 구분)(*.csv)를 대상 파일 형식으로 선택합니다.In Excel, select File | Save As and then select Text (Tab delimited) (*.txt) or CSV (Comma delimited) (*.csv) as the destination file type.

데이터 가져오기 도구로 최상의 결과를 얻으려면, 데이터의 열 헤더 및 행만 포함하는 시트를 저장합니다.For best results with data importing tools, save sheets that contain only the column headers and the rows of data. 저장된 데이터에 페이지 제목, 빈 줄, 메모 등이 포함되어 있는 경우 나중에 데이터를 가져올 때 예기치 않은 결과가 발생할 수 있습니다.If the saved data contains page titles, blank lines, notes, and so forth, you may see unexpected results later when you import the data.

BULK INSERT 명령BULK INSERT command

BULK INSERT는 SQL Server Management Studio에서 실행할 수 있는 Transact-SQL 명령입니다.BULK INSERT is a Transact-SQL command that you can run from SQL Server Management Studio. 다음 예제에서는 Data.csv 쉼표로 구분된 파일에서 기존 데이터베이스 테이블로 데이터를 로드합니다.The following example loads the data from the Data.csv comma-delimited file into an existing database table.

USE ImportFromExcel;
GO
BULK INSERT Data_bi FROM 'D:\Desktop\data.csv'
   WITH (
      FIELDTERMINATOR = ',',
      ROWTERMINATOR = '\n'
);
GO

자세한 내용은 다음 항목을 참조하세요.For more info, see the following topics:

BCP 도구BCP tool

BCP는 명령 프롬프트에서 실행되는 프로그램입니다.BCP is a program that you run from the command prompt. 다음 예제에서는 Data.csv 쉼표로 구분된 파일에서 기존 Data_bcp 데이터베이스 테이블로 데이터를 로드합니다.The following example loads the data from the Data.csv comma-delimited file into the existing Data_bcp database table.

bcp.exe ImportFromExcel..Data_bcp in "D:\Desktop\data.csv" -T -c -t ,

BCP에 대한 자세한 내용은 다음 항목을 참조하세요.For more info about BCP, see the following topics:

복사 마법사(Azure Data Factory)Copy Wizard (Azure Data Factory)

마법사 페이지를 단계별로 실행하여 텍스트 파일로 저장된 데이터를 가져옵니다.Import data saved as text files by stepping through the pages of the Copy Wizard.

복사 마법사에 대한 자세한 내용은 다음 항목을 참조하세요.For more info about the Copy Wizard, see the following topics:

Azure Data FactoryAzure Data Factory

Azure Data Factory에 익숙하여 복사 마법사를 실행되지 않게 하려면 텍스트 파일을 SQL Server 또는 Azure SQL Database로 복사하는 복사 작업으로 파이프라인을 만듭니다.If you're familiar with Azure Data Factory and don't want to run the Copy Wizard, create a pipeline with a Copy activity that copies from the text file to SQL Server or to Azure SQL Database.

이러한 Data Factory 원본 및 싱크에 대한 자세한 내용은 다음 항목을 참조하세요.For more info about using these Data Factory sources and sinks, see the following topics:

Azure Data Factory를 사용해 데이터를 복사하는 방법을 알아보려면 다음 항목을 참조하세요.To start learning how to copy data with Azure data factory, see the following topics:

다음 단계Next steps

관심 있는 솔루션에 대한 자세한 내용을 알아보려면 제공된 링크로 이동하세요.To learn more about the solution that interests you, follow the links provided for more info.