developer tip

Linux에서 두 SQLite 데이터베이스를 비교하는 방법

optionbox 2021. 1. 11. 08:02
반응형

Linux에서 두 SQLite 데이터베이스를 비교하는 방법


Linux를 사용하여 동일한 스키마를 가진 두 개의 SQLite 데이터베이스를 비교하고 싶습니다. 몇 가지 차이점이 있습니다.

이러한 차이를 출력하는 도구가 있습니까? 가급적이면 명령 줄에 출력하여 grep / sed 할 수 있습니다.

SQLite는 SQL을 사용하므로 일반 SQL 도구도 사용할 수 있습니다.


2015 년 5 월 7 일에 릴리스SQLite 릴리스 3.8.10살펴보십시오 .이 릴리스에는 두 SQLite 데이터베이스 파일 간의 차이를 계산하기위한 sqldiff.exe 유틸리티 프로그램 이 처음으로 포함되어 있습니다. 대부분의 경우이 프로그램은 향후 릴리스의 일부가 될 것입니다.

sqldiff.exe 명령 줄 줄 도구 출력 동작을 변경하기위한 지원되는 모든 운영 체제 및 이벤트 여러 스위치를 작동합니다. 사용 예 :

sqldiff [options] database1.sqlite database2.sqlite

옵션이 지정되지 않은 경우 sqldiff.exe 의 출력은 database1.sqlite( "소스"데이터베이스)를 database2.sqlite( "대상"데이터베이스) 변환 할 SQL 문입니다 .

그러나 특정 제한 사항도 있습니다. 예를 들어, sqldiff.exe 유틸리티 (적어도 현재)는 TRIGGER, VIEW 또는 가상 테이블의 차이점을 표시하지 않습니다.


샘플 명령 및 출력

간단한 키-값 저장소 데이터베이스 ( db1.sqlite)를 가져 와서 복사본을 만들었습니다 ( db2.sqlite). 그런 다음 하나의 키-값 쌍을 db2.sqlite. 그 후 다음 명령을 실행했습니다.

sqldiff db1.sqlite db2.sqlite

다음 출력을 얻었습니다.

INSERT INTO my_table (rowid, "key", value) VALUES (1, 'D : \ Test \ Test.txt', x'aabbccdd ');
UPDATE my_table_size SET counter = 1 WHERE rowid = 1;

my_table_size키-값 쌍이에 삽입 된 후 TRIGGER에 의해 테이블 이 자동으로 업데이트되었습니다 my_table. 그런 다음 sqldiff.exe를 다시 실행 했지만 이번에는 with db2.sqlite를 첫 번째 인수로 사용하고 db1.sqlite두 번째 인수로 사용했습니다.

sqldiff db2.sqlite db1.sqlite

다음 출력을 얻었습니다.

my_table WHERE rowid = 1에서 삭제;
UPDATE my_table_size SET counter = 0 WHERE rowid = 1;


sqldiff 다운로드 링크

2016 년 1 월 20 일에 릴리스 된 SQLite 버전 3.10.2 부터 sqldiff 용 32 비트 바이너리 SQLite 다운로드 페이지 에서 직접 다운로드 할 수 있습니다 . 해당 운영 체제 에 대한 sqlite 도구 아카이브 에서 찾을 수 있습니다 ( 사전 컴파일 된 바이너리 섹션 참조 ). 예를 들어 다음은 버전 3.30.0 sqlite 도구 아카이브에 대한 링크입니다 .

3.10.2 이전 버전의 SQLite의 경우 SQLite 웹 사이트는 sqldiff대한 32 비트 바이너리를 호스팅 하지만 링크는하지 않습니다. 다음은 버전 3.8.10의 sqldiff대한 링크 입니다.

64 비트 바이너리가 필요한 경우 원시 소스 다운로드 하여 직접 컴파일해야합니다. (파일 sqldiff.c소스를 포함하는 아카이브 도구 하위 디렉토리에 있습니다.)


한 가지 가능성은 sqlite3명령 줄 클라이언트 를 사용하여 두 데이터베이스를 모두 내 보낸 다음 출력을 비교하는 것입니다. 예를 들면

sqlite3 first.sqlite .dump >first.dump
sqlite3 second.sqlite .dump >second.dump
diff first.dump second.dump

Windows 전용이지만 Code Project에는 http://www.codeproject.com/Articles/220018/SQLite-Compare-Utility 에 무료 / 오픈 소스 SQLite 데이터베이스 비교 앱이 있습니다.


SQLite Diff를 사용해보십시오 .

참고 : 이것은이 글을 쓰는 시점에 25 달러의 유료 제품이며 저자와는 어떤 식으로도 관련이 없습니다 .


2016 년 1 월 20 일부터 sqldiff (Windows sqldiff.exe)는 http://sqlite.org/download.html 의 zip 파일에 포함되어 있습니다 .

참조 URL : https://stackoverflow.com/questions/2093263/how-to-compare-two-sqlite-databases-on-linux

반응형