bcp를 사용하여 SQL Server on Linux로 데이터 대량 복사

적용 대상:SQL Server - Linux

이 문서에서는 bcp 유틸리티를 사용하여 SQL Server on Linux 인스턴스와 사용자 지정 형식의 데이터 파일 간에 데이터를 대량 복사하는 방법을 보여 줍니다.

bcp를 사용하여 많은 수의 행을 SQL Server 테이블로 가져오거나 SQL Server 테이블에서 데이터 파일로 데이터를 내보낼 수 있습니다. 쿼리 아웃 옵션과 함께 사용되는 경우를 제외하고 bcp 에는 Transact-SQL에 대한 지식이 필요하지 않습니다. bcp 명령줄 유틸리티는 온-프레미스 또는 클라우드, Linux, Windows 또는 Docker, Azure SQL Database 및 Azure Synapse Analytics에서 실행되는 Microsoft SQL Server에서 작동합니다.

이 문서는 다음을 수행하는 방법을 보여줍니다.

  • bcp in 명령을 사용하여 테이블로 데이터 가져오기
  • 명령을 사용하여 테이블에서 데이터 내보내기 bcp out

SQL Server 명령줄 도구 설치

bcp 는 SQL Server on Linux와 함께 자동으로 설치되지 않는 SQL Server 명령줄 도구의 일부입니다. Linux 컴퓨터에 SQL Server 명령줄 도구를 아직 설치하지 않은 경우 설치해야 합니다. 도구를 설치하는 방법에 대한 자세한 내용은 다음 목록에서 Linux 배포를 선택합니다.

bcp를 사용하여 데이터 가져오기

이 자습서에서는 로컬 SQL Server 인스턴스(localhost)에 샘플 데이터베이스 및 테이블을 만든 다음 bcp를 사용하여 디스크의 텍스트 파일에서 샘플 테이블로 로드합니다.

샘플 데이터베이스 및 테이블 만들기

먼저 이 자습서의 나머지 부분에 사용되는 간단한 테이블이 있는 샘플 데이터베이스를 만들어 보겠습니다.

  1. Linux 상자에서 명령 터미널을 엽니다.

  2. 다음 명령을 복사하여 터미널 창에 붙여넣습니다. 이러한 명령은 sqlcmd 명령줄 유틸리티를 사용하여 로컬 SQL Server 인스턴스()에 샘플 데이터베이스(BcpSampleDBTestEmployees) 및 테이블(localhost)을 만듭니다. 명령을 실행하기 전에 필요에 따라 바꿔 username<your_password> 야 합니다.

데이터베이스 BcpSampleDB만들기:

sqlcmd -S localhost -U sa -P <your_password> -Q "CREATE DATABASE BcpSampleDB;"

데이터베이스BcpSampleDB에서 테이블을 TestEmployees 만듭니다.

sqlcmd -S localhost -U sa -P <your_password> -d BcpSampleDB -Q "CREATE TABLE TestEmployees (Id INT IDENTITY(1,1) NOT NULL PRIMARY KEY, Name NVARCHAR(50), Location NVARCHAR(50));"

원본 데이터 파일 만들기

다음 명령을 복사하여 터미널 창에 붙여넣습니다. 기본 제공 cat 명령을 사용하여 3개의 레코드가 있는 샘플 텍스트 데이터 파일을 만들어 홈 디렉터리에 파일을 다음과 같이 ~/test_data.txt저장합니다. 레코드의 필드는 쉼표로 구분됩니다.

cat > ~/test_data.txt << EOF
1,Jared,Australia
2,Nikita,India
3,Tom,Germany
EOF

터미널 창에서 다음 명령을 실행하면 데이터 파일이 올바르게 만들어졌는지 확인할 수 있습니다.

cat ~/test_data.txt

터미널 창에 다음이 표시됩니다.

1,Jared,Australia
2,Nikita,India
3,Tom,Germany

원본 데이터 파일에서 데이터 가져오기

다음 명령을 복사하여 터미널 창에 붙여넣습니다. 이 명령은 bcp를 사용하여 로컬 SQL Server 인스턴스(localhost)에 연결하고 데이터 파일(~/test_data.txt)의 데이터를 데이터베이스()의 테이블(TestEmployeesBcpSampleDB)로 가져옵니다. 명령을 실행하기 전에 필요에 따라 사용자 이름을 <your_password> 바꿔야 합니다.

bcp TestEmployees in ~/test_data.txt -S localhost -U sa -P <your_password> -d BcpSampleDB -c -t  ','

다음은 이 예제에서 bcp와 함께 사용한 명령줄 매개 변수에 대한 간략한 개요입니다.

  • -S: 연결할 SQL Server의 인스턴스를 지정합니다.
  • -U: SQL Server에 연결하는 데 사용되는 로그인 ID를 지정합니다.
  • -P: 로그인 ID의 암호를 지정합니다.
  • -d: 연결할 데이터베이스를 지정합니다.
  • -c: 문자 데이터 형식을 사용하여 작업을 수행합니다.
  • -t: 필드 종결자를 지정합니다. 데이터 파일의 레코드에 대한 필드 종결자로 사용 comma 중입니다.

참고 항목

이 예제에서는 사용자 지정 행 종결자를 지정하지 않습니다. 텍스트 데이터 파일의 행은 이전에 데이터 파일을 만드는 명령을 사용 cat 했을 때 올바르게 종료되었습니다newline.

터미널 창에서 다음 명령을 실행하면 데이터를 성공적으로 가져왔는지 확인할 수 있습니다. 명령을 실행하기 전에 필요에 따라 바꿔 username<your_password> 야 합니다.

sqlcmd -S localhost -d BcpSampleDB -U sa -P <your_password> -I -Q "SELECT * FROM TestEmployees;"

다음과 같은 결과가 표시됩니다.

Id          Name                Location
----------- ------------------- -------------------
          1 Jared               Australia
          2 Nikita              India
          3 Tom                 Germany

bcp를 사용하여 데이터 내보내기

이 자습서에서는 bcp를 사용하여 앞에서 만든 샘플 테이블의 데이터를 새 데이터 파일로 내보냅니다.

다음 명령을 복사하여 터미널 창에 붙여넣습니다. 이러한 명령은 bcp 명령줄 유틸리티를 사용하여 데이터베이스 BcpSampleDB 의 테이블에서 TestEmployees 새 데이터 파일로 데이터를 내보~/test_export.txt냅니다. 필요한 경우, 명령을 실행하기 전에 username 및 <your_password>를 바꾸어야 합니다.

bcp TestEmployees out ~/test_export.txt -S localhost -U sa -P <your_password> -d BcpSampleDB -c -t ','

터미널 창에서 다음 명령을 실행하여 데이터를 올바르게 내보낸 것을 확인할 수 있습니다.

cat ~/test_export.txt

터미널 창에 다음이 표시됩니다.

1,Jared,Australia
2,Nikita,India
3,Tom,Germany