제목은 자명하다. 이러한 종류의 가져 오기를 직접 수행하는 방법이 있습니까?
SQL Server의 .BAK 파일은 MTF (Microsoft Tape Format) 참조입니다. http : //www.fpns.net/willy/msbackup.htm
Bak 파일에는 SQL Server가 데이터베이스를 저장하는 데 사용하는 LDF 및 MDF 파일)이 포함되어있을 것입니다.
이를 추출하려면 SQL 서버를 사용해야합니다. SQL Server Express는 무료이며 작업을 수행합니다.
따라서 SQL Server Express Edition을 설치하고 SQL Server Powershell을 엽니 다. sqlcmd -S <COMPUTERNAME>\SQLExpress
(관리자로 로그인 한 상태)
다음 명령을 발행하십시오.
restore filelistonly from disk='c:\temp\mydbName-2009-09-29-v10.bak';
GO
여기에는 백업 내용이 나열됩니다. 필요한 것은 논리적 이름을 알려주는 첫 번째 필드입니다. 하나는 실제 데이터베이스이고 다른 하나는 로그 파일입니다.
RESTORE DATABASE mydbName FROM disk='c:\temp\mydbName-2009-09-29-v10.bak'
WITH
MOVE 'mydbName' TO 'c:\temp\mydbName_data.mdf',
MOVE 'mydbName_log' TO 'c:\temp\mydbName_data.ldf';
GO
이 시점에서 데이터베이스를 추출한 다음 Microsoft의 "Sql Web Data Administrator"를 설치하십시오이 내보내기 도구 와 함께 SQL 스크립트가 생성됩니다. 데이터베이스를 포함합니다.
MySql에는 Microsoft SQL에서 DB를 가져 오는 응용 프로그램이 있습니다. 단계 :
직접 할 수있는 방법을 찾지 못했습니다.
대신 bak 파일을 SQL Server 2008 Express로 가져 와서 MySQL Migration Toolkit 을 사용했습니다.
매력처럼 일했다!
내 MySQL 배경이 제한되어 있지만 그렇게하는 것이 운이 좋지 않다고 생각합니다. 그러나 db를 MSSQL 서버로 복원 한 다음 SSIS 또는 DTS 패키지를 만들어 테이블과 데이터를 MySQL 서버로 보내서 모든 데이터를 마이그레이션 할 수 있어야합니다.
이것이 도움이되기를 바랍니다.
SQL Server의 .bak 파일은 해당 데이터베이스 언어와 관련이 있으며 MySQL과 호환되지 않습니다.
etlalchemy 를 사용하여 SQL Server 데이터베이스를 MySQL로 마이그레이션하십시오. 다른 RDBMS간에 쉽게 마이그레이션 할 수 있도록 만든 오픈 소스 도구입니다.
빠른 설치 및 예제는 여기 github 페이지 에 제공되며 프로젝트 원점에 대한 자세한 설명은 여기 에서 찾을 수 있습니다.
위의 Richard의 솔루션을 시도하는 사람들을 위해 일반적인 오류를 탐색하는 데 도움이되는 몇 가지 추가 정보가 있습니다.
1) 복원 파일 목록 만 실행하면 운영 체제 오류 5 (액세스 거부)가 발생할 수 있습니다. 이 경우 SQL Server 구성 관리자를 열고 SQLEXPRESS의 로그인을 로컬 쓰기 권한이있는 사용자로 변경하십시오.
2) @ "이것은 백업의 내용을 나열합니다-필요한 것은 논리적 이름을 알려주는 첫 번째 필드입니다."-파일에 헤더가 두 개 이상 나열되면 해당 파일로 수행 할 작업을 설명해야합니다. RESTORE DATABASE 명령 데이터베이스 및 로그 이외의 파일로 수행 할 작업을 표시하지 않으면 시스템은 .bak 파일에 나열된 속성을 사용하려고합니다. 다른 사람의 환경에서 파일을 복원하면 '경로에 잘못된 속성이 있습니다. 해당 경로가 시스템에 없기 때문에 디렉토리 여야합니다. ' MOVE 문만 제공하면이 문제가 해결됩니다.
제 경우에는 세 번째 FTData 형식 파일이있었습니다. 내가 추가 한 MOVE 명령 :
MOVE 'mydbName_log' TO 'c:\temp\mydbName_data.ldf',
MOVE 'sysft_...' TO 'c:\temp\other';
필자의 경우 실제로 세 번째 파일의 새 디렉토리를 만들어야했습니다. 처음에 .mdf 파일과 동일한 폴더로 보내려고했지만 복원을 실행할 때 세 번째 FTData 파일에서 '정확하게 초기화하지 못했습니다'오류가 발생했습니다.
내가 사용한 방법은 Richard Harrison의 방법 중 일부를 포함했습니다.
따라서 SQL Server 2008 Express Edition을 설치하십시오.
Web Platform Installer "wpilauncher_n.exe"를 다운로드해야합니다. 일단 설치 한 후에는 데이터베이스 선택을 클릭하십시오 (프레임 워크 및 런타임도 다운로드해야 함).
설치 후 windows 명령 프롬프트로 이동하여 다음을 수행하십시오.
sqlcmd -S\SQLExpress 사용 (관리자로 로그인 한 상태)
다음 명령을 발행하십시오.
disk = 'c :\temp\mydbName-2009-09-29-v10.bak'에서 파일 목록 만 복원; GO 백업 내용을 나열합니다. 필요한 것은 논리적 이름을 알려주는 첫 번째 필드입니다. 하나는 실제 데이터베이스이고 다른 하나는 로그 파일입니다.
데이터베이스 복원 mydbName FROM disk = 'c :\temp\mydbName-2009-09-29-v10.bak' 'mydbName'을 'c :\temp\mydbName_data.mdf'로 이동하고 'mydbName_log'를 'c : \로 이동합니다. temp\mydbName_data.ldf '; 가기
Web Platform Installer를 시작하고 새로운 기능 탭에서 SQL Server Management Studio를 설치하고 데이터베이스를 탐색하여 데이터가 있는지 확인했습니다 ...
그 시점에서 MSSQL "SQL Import and Export Wizard"에 포함 된 도구를 사용해 보았지만 csv 덤프의 결과에는 열 이름 만 포함되었습니다 ...
대신 SQL Server Management Studio에서 "select * from users"와 같은 쿼리 결과를 내보냈습니다.
나는 그것을 의심한다. Levi가 말한 것처럼 DTS/SSIS를 사용하여이 작업을 수행 할 수 있습니다. 실제로 데이터를 가져 오지 않고 프로세스를 시작하는 것이 좋습니다. 기본 테이블 구조를 함께 얻기에 충분합니다. 그런 다음 생성되는 테이블 구조를 변경하려고 할 것입니다.
또한 한 단계 더 나아가서 모든 데이터를 먼저 문자열 (varchar) 형식으로 사용하는 준비 영역을 만들어야 할 수도 있습니다. 그런 다음 유효성 검사 및 변환을 수행하여 "실제"데이터베이스로 가져 오는 스크립트를 만들 수 있습니다. 두 데이터베이스는 특히 날짜를 처리 할 때 항상 제대로 작동하지 않기 때문입니다.
SQL Server 데이터베이스는 Microsoft 소유입니다. 내가 생각할 수있는 두 가지 옵션은 다음과 같습니다.
데이터베이스를 CSV, XML 또는 유사한 형식으로 덤프 한 다음 MySQL에로드하십시오.
설치 ODBC MySQL에 연결 한 다음 DTS 데이터 전송 사용) Charles Graham이 제안했듯이이 작업을 수행하기 전에 테이블을 작성해야 할 수도 있습니다. SQL Enterprise Manager 창에서 해당 MySQL 창으로 잘라 붙여 넣기만큼 쉽습니다.