다음을 통해 공유


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

적용 대상: SQL Server - Linux

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

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

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

  • 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 인스턴스(BcpSampleDB)에 샘플 데이터베이스(TestEmployees) 및 테이블(localhost)을 만듭니다. 필요한 경우, 명령을 실행하기 전에 username<your_password>를 바꾸어야 합니다.

데이터베이스 BcpSampleDB 만들기:

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

데이터베이스 TestEmployees에 테이블 BcpSampleDB 만들기:

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)의 데이터를 데이터베이스(TestEmployees)의 테이블(BcpSampleDB)로 가져옵니다. 필요한 경우, 명령을 실행하기 전에 username 및 <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를 사용하고 있습니다.

참고 항목

이 예시에서는 사용자 지정 행 종결자를 지정하지 않습니다. 앞서 newline 명령을 사용하여 데이터 파일을 만들었을 때 텍스트 데이터 파일의 행이 cat으로 올바르게 종료되었습니다.

터미널 창에서 다음 명령을 실행하면 데이터를 성공적으로 가져왔는지 확인할 수 있습니다. 필요한 경우, 명령을 실행하기 전에 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