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.

  • SQL Server 가져오기 및 내보내기 마법사, Integration Services(SSIS) 또는 OPENROWSET 함수를 사용하여 Excel SQL에서 직접 데이터를 가져올 수 있습니다.You can import data directly from Excel SQL by using the SQL Server Import and Export Wizard, Integration Services (SSIS), or the OPENROWSET function.
  • Excel 데이터를 텍스트로 저장한 다음, BULK INSERT 문, BCP 또는 Azure Data Factory를 사용할 수 있습니다.You can save your Excel data as text, and then use the BULK INSERT statement, BCP, or Azure Data Factory. 더 자세한 지침을 확인할 수 있는 링크가 있는 옵션이 여기에 요약되어 있습니다.We summarize the options here with links to more detailed instructions.
참고

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 tutorials and more info.

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

마법사의 페이지를 단계별로 실행하여 Excel 파일에서 직접 데이터를 가져옵니다.Import data directly from Excel files by stepping through the pages of a 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 files 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.

OPENROWSET 또는 OPENDATASOURCE 기능을 사용하여 Excel 파일에서 데이터를 직접 가져옵니다.Import data directly from Excel files by using the 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

다음 코드 샘플은 Excel Customers 워크시트에서 OPENROWSET이 있는 새 SQL Server 테이블로 데이터를 가져옵니다.The following code sample imports the data from the Excel Customers worksheet into a new SQL Server table with OPENROWSET.

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 SELECT ... FROM ... syntax.

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

Excel 파일을 연결된 서버로 영구 연결을 구성할 수도 있습니다.You can also configure a persistent connection to the Excel file as a linked server. 다음 예제에서는 기존 Excel 연결된 서버 EXCELLINK에 있는 Data 워크시트에서 Data_ls라는 새 SQL Server 테이블로 데이터를 가져옵니다.The following example imports the data from the Data worksheet on the existing Excel linked server EXCELLINK into a new SQL Server 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에서 실행할 수 있는 명령입니다.BULK INSERT is a 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 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는 명령 프롬프트에서 실행되는 SQL Server입니다.BCP is a SQL Server that you run from the command prompt. 다음 예제에서는 Data.csv CSV 파일에서 SQL Server의 기존 Data_bcp 테이블로 데이터를 로드합니다.The following example loads the data from the Data.csv CSV file into the existing Data_bcp table in SQL Server.

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

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

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

마법사의 페이지를 단계별로 실행하여 텍스트 파일로 저장된 데이터를 가져옵니다.Import data saved as text files by stepping through the pages of a wizard. 복사 마법사에 대한 자세한 내용은 다음 항목을 참조하세요.For more info about the Copy Wizard, see the following topics.

Azure Data FactoryAzure Data Factory

Azure Data Factory에 익숙하여 Azure Data Factory 복사 마법사를 실행되지 않게 하려면 File Storage 위치의 텍스트 파일을 SQL Server 또는 Azure SQL Database로 복사하는 복사 활동으로 파이프라인을 만듭니다.If you're familiar with Azure Data Factory and don't want to run the Azure Data Factory Copy Wizard, create a pipeline with a Copy activity that copies from the text file in a file storage location 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.