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
'developer tip' 카테고리의 다른 글
Tortoise SVN을 사용하여 SVN 저장소에서 디렉토리 이동 (0) | 2021.01.11 |
---|---|
Dictionary.keyscollection을 문자열 배열로 변환 (0) | 2021.01.11 |
Ruby 모듈의 상수 범위 (0) | 2021.01.11 |
JavaScript에서 CPU 코어 수를 얻습니까? (0) | 2021.01.11 |
Sublime Text 3에서 기본 코드 조각을 변경하는 방법은 무엇입니까? (0) | 2021.01.10 |