SQL Server 간에 테이블 데이터 내보내기
두 개의 SQL 서버(둘 다 2005년 버전)가 있습니다.
여러 테이블을 한 테이블에서 다른 테이블로 마이그레이션하려고 합니다.
시도해 본 결과:
버튼으로 에서 " 원본서서데베이스를마우다오클니습했릭단추로쪽른"를 선택했습니다. 선택됨
Tasks/Generate scripts
는 문는아래있것다입니다는에제▁under다▁the▁that니것입▁is▁problem.Table/View options
.Script data
선택.그다음에 제가.
Script Table As/Create script
SQL 파일을 생성하여 대상 서버에 테이블을 만듭니다.하지만 저는 여전히 모든 데이터가 필요합니다.
그런 다음 다음을 사용해 보았습니다.
SELECT *
INTO [destination server].[destination database].[dbo].[destination table]
FROM [source server].[source database].[dbo].[source table]
하지만 오류가 발생했습니다.
개체에 최대 접두사 수보다 많습니다.최대값은 2입니다.
누가 제 문제에 대한 올바른 해결책을 알려주실 수 있나요?
사용해 보십시오.
사대서테상만다듭의 하여 대상 .
Script Table As / Create Script
그런 다음 대상 서버에서 T-SQL 문을 실행할 수 있습니다.
INSERT INTO dbo.YourTableNameHere SELECT * FROM [SourceServer].[SourceDatabase].dbo.YourTableNameHere
이것은 잘 작동할 것입니다.
또 다른 옵션(SQL Server 2008 이상의 경우)을 보여드리겠습니다.
- 데이터베이스를 마우스 오른쪽 버튼으로 클릭 -> '작업' -> '스크립트 생성'을 선택합니다.
- 복사할 특정 데이터베이스 개체를 선택합니다.하나 이상의 테이블을 예로 들어 보겠습니다.다음 클릭
- 고급을 클릭하고 '스크립트할 데이터 유형'으로 스크롤한 후 '스키마 및 데이터'를 선택합니다.확인 클릭
- 생성된 스크립트를 저장할 위치를 선택하고 다음을 클릭하여 진행합니다.
서버를 연결할 수 있는 권한이 없는 경우 SQL Server 가져오기/내보내기 마법사를 사용하여 한 서버에서 다른 서버로 테이블을 가져오는 단계는 다음과 같습니다.
- 복사할 원본 데이터베이스를 마우스 오른쪽 단추로 클릭합니다.
- [태스크] - [데이터 내보내기]를 선택합니다.
- 데이터 소스에서 SQL Server Native Client를 선택합니다.
- 인증 유형(Sql Server 또는 Windows 인증)을 선택합니다.
- 원본 데이터베이스를 선택합니다.
- 그런 다음 대상: SQL Server Native Client를 선택합니다.
- 서버 이름(테이블을 복사할 서버)을 입력합니다.
- 인증 유형(Sql Server 또는 Windows 인증)을 선택합니다.
- 대상 데이터베이스를 선택합니다.
- 데이터 복사를 선택합니다.
- 목록에서 테이블을 선택합니다.
- 다음을 누르고 즉시 실행을 선택하거나 나중에 실행하려면 선택적으로 패키지를 파일 또는 SQL 서버에 저장할 수도 있습니다.
- 끝내라.
작업/스크립트 생성에 스크립트 테이블 옵션이 있습니다!나도 처음에 그것을 놓쳤어요!그러나 삽입 스크립트를 생성할 수 있습니다(매우 좋은 기능이지만 직관적이지 않은 위치에서).
"스크립팅 옵션 설정" 단계가 나타나면 "고급" 탭으로 이동합니다.
여기에 설명된 단계(사진은 이해할 수 있지만, 저는 라트비아어로 씁니다.
SQL Server 가져오기 및 내보내기 마법사(Tasks -> Export Data)를 사용해 보십시오.
대상 데이터베이스에 테이블을 만들 수 있습니다.반면에 스크립트 마법사는 테이블 구조만 만들 수 있습니다.
스크립트를 사용하여 테이블을 이미 만든 경우 BCP 명령을 사용하여 원본 서버의 모든 데이터를 대상 서버로 복사하는 것이 데이터를 복사하는 또 다른 방법입니다.
테이블 데이터를 원본 서버의 텍스트 파일로 내보내는 방법
bcp <database name>.<schema name>.<table name> OUT C:\FILE.TXT -c -t -T -S <server_name[ \instance_name]> -U <username> -P <Password>
대상 서버의 텍스트 파일에서 테이블 데이터를 가져오는 방법
bcp <database name>.<schema name>.<table name> IN C:\FILE.TXT -c -t -T -S <server_name[ \instance_name]> -U <username> -P <Password>
소스에서 대상으로 데이터를 복사하는 경우:
use <DestinationDatabase>
select * into <DestinationTable> from <SourceDataBase>.dbo.<SourceTable>
그냥 재미로.
할 수 할 수 입니다.INSERT INTO
저는 다음을 했습니다.
- 프로덕션 서버 데이터베이스의 백업 생성
- 테스트 서버에서 데이터베이스 복원
- 문에 삽입을 실행
뒷문으로 해결하는 방법이지만, 제가 문제가 있었기 때문에 효과가 있었습니다.
다음을 사용하여 빈 테이블을 만들었기 때문입니다.SCRIPT TABLE AS / CREATE
사용할 수 .SELECT INTO
.SELECT INTO
테이블이 대상 위치에 없지만 키와 인덱스를 복사하지 않는 경우에만 작동하므로 수동으로 작업해야 합니다.을 사용할 INSERT INTO
모든 열 이름을 수동으로 제공해야 하며 일부 외부 키 제약 조건이 실패할 경우 문제가 발생할 수 있습니다.
모든 답변 덕분에 몇 가지 훌륭한 해결책이 있지만 marc_sanswer를 받아들이기로 결정했습니다.
원본/대상 서버를 선택할 수 없습니다.
데이터베이스가 동일한 서버에 있는 경우 다음 작업을 수행할 수 있습니다.
테이블의 열이 동일한 경우(순서 포함!) 다음 작업을 수행할 수 있습니다.
INSERT INTO [destination database].[dbo].[destination table]
SELECT *
FROM [source database].[dbo].[source table]
원본 데이터베이스를 백업/복원할 수 있습니다.이 작업을 더 자주 수행해야 하는 경우 원본 데이터베이스를 정의하는 SSIS 프로젝트를 시작하고(모든 서버에서 연결을 선택할 수 있음) 데이터를 이동하는 프로젝트를 만드는 것이 좋습니다.자세한 내용은 여기를 참조하십시오. http://msdn.microsoft.com/en-us/library/ms169917%28v=sql.105%29.aspx
데이터 가져오기/내보내기를 통해 수행할 수 있습니다.SQL Server Management Studio에서
이것은 다소 우회적인 해결책이지만 저에게는 효과가 있었습니다. 다른 사람들에게도 효과가 있기를 바랍니다.
내보낼 테이블에서 SQL 선택 조회를 실행하고 결과를 드라이브에 .xls로 저장할 수 있습니다.
이제 모든 열과 인덱스를 사용하여 데이터를 추가할 테이블을 만듭니다.이 작업은 실제 테이블을 마우스 오른쪽 버튼으로 누르고 Create To script 옵션을 선택하면 쉽게 수행할 수 있습니다.
이제 테이블을 추가할 DB를 마우스 오른쪽 단추로 클릭하고 태스크 > 가져오기를 선택할 수 있습니다.
내보내기 가져오기 마법사가 열리고 다음을 선택합니다.Microsoft Excel을 입력 데이터 원본으로 선택한 다음 이전에 저장한 .xls 파일을 찾아 선택합니다.
이제 대상 서버와 이미 작성한 대상 테이블을 선택합니다.
참고: ID 기반 필드가 있으면 대상 테이블에 ID 속성을 제거할 수 있습니다. 이 데이터도 삽입됩니다. 따라서 ID 속성으로만 사용할 경우 가져오기 프로세스가 오류가 발생합니다.
next를 누르고 finish를 누르면 가져온 레코드 수가 표시되고 오류가 발생하지 않으면 성공을 반환합니다.
사용 가능한 경우 다른 옵션: c#.net.특히, 마이크로소프트.SqlServer.관리.Smo 네임스페이스.
SSIS 패키지 중 하나의 스크립트 구성 요소에서 다음과 유사한 코드를 사용합니다.
var tableToTransfer = "someTable";
var transferringTableSchema = "dbo";
var srvSource = new Server("sourceServer");
var dbSource = srvSource.Databases["sourceDB"];
var srvDestination = new Server("destinationServer");
var dbDestination = srvDestination.Databases["destinationDB"];
var xfr =
new Transfer(dbSource) {
DestinationServer = srvDestination.Name,
DestinationDatabase = dbDestination.Name,
CopyAllObjects = false,
DestinationLoginSecure = true,
DropDestinationObjectsFirst = true,
CopyData = true
};
xfr.Options.ContinueScriptingOnError = false;
xfr.Options.WithDependencies = false;
xfr.ObjectList.Add(dbSource.Tables[tableToTransfer,transferringTableSchema]);
xfr.TransferData();
마이크로소프트를 명시적으로 검색하고 추가해야 했다고 생각합니다.SqlServer.참조에 대한 Smo 라이브러리.하지만 그 외에도, 이것은 저에게 잘 해결되었습니다.
업데이트: 네임스페이스와 라이브러리는 제가 기억하는 것보다 더 복잡했습니다.
라이브러리의 경우 다음에 참조를 추가합니다.
- 마이크로소프트.SqlServer.Smo.dll
- 마이크로소프트.SqlServer.SmoExtended.dll
- 마이크로소프트.SqlServer.ConnectionInfo.dll
- 마이크로소프트.SqlServer.관리.Sdk.Sfc.dll
네임스페이스의 경우 다음을 추가합니다.
- 마이크로소프트.SqlServer.관리.흔한
- 마이크로소프트.SqlServer.관리.스모
언급URL : https://stackoverflow.com/questions/11009189/export-table-data-from-one-sql-server-to-another
'programing' 카테고리의 다른 글
포스트그리 재설정SQL 기본 키 - 1 (0) | 2023.05.31 |
---|---|
빈 UI 테이블 보기를 처리합니다.친숙한 메시지 인쇄 (0) | 2023.05.31 |
레일 형식 지정 날짜 (0) | 2023.05.31 |
Android 색상 XML 리소스 파일의 웹 색상 (0) | 2023.05.31 |
UIButton 이미지 + 텍스트 IOS (0) | 2023.05.31 |