WinMerge에서 SQLite를 비교하는 방법
도입 방법
1. SQLite용 ODBC를 설치합니다.
h tp // w w. ch ぇ r네 r. 에 / sq
다음 중 하나 또는 모두 설치하십시오.
sqliteodbc.exe
sqliteodbc_w64.exe
2. 다음과 유사한 파일 만들기
SqliteToText.sct<scriptlet>
<implements type="Automation" id="dispatcher">
<property name="PluginEvent">
<get/>
</property>
<property name="PluginDescription">
<get/>
</property>
<property name="PluginFileFilters">
<get/>
</property>
<property name="PluginIsAutomatic">
<get/>
</property>
<method name="UnpackFile"/>
<method name="PackFile"/>
</implements>
<script language="VBS">
Option Explicit
Function get_PluginEvent()
get_PluginEvent = "FILE_PACK_UNPACK"
End Function
Function get_PluginDescription()
get_PluginDescription = "SqliteToText"
End Function
Function get_PluginFileFilters()
get_PluginFileFilters = "\.sqlite(\..*)?$;\.sqlite3(\..*)?$;\.db(\..*)?$"
End Function
Function get_PluginIsAutomatic()
get_PluginIsAutomatic = True
End Function
Function UnpackFile(fileSrc, fileDst, pbChanged, pSubcode)
Dim cnn
Dim Filename
Dim rs
Dim i
Dim tableNameDict
Dim name
Dim fso
Dim fo
Set fso = CreateObject("Scripting.FileSystemObject")
Set fo = fso.CreateTextFile(fileDst, True)
Set cnn = CreateObject("ADODB.Connection")
cnn.CursorLocation = 3 '
FileName = "test.sqlite"
cnn.Open "DRIVER=SQLite3 ODBC Driver;Database=" & fileSrc & ";"
Set rs = cnn.Execute("SELECT * FROM sqlite_master;")
i = 0
rs.MoveFirst
Do While Not rs.EOF
name = rs.Fields("Name").Value
fo.WriteLine "[" & name & "]"
fo.WriteLine rs.Fields("sql").Value
If rs.Fields("Type").Value = "table" Then
call showTable(fo, cnn , name)
End if
rs.MoveNext
i = i + 1
Loop
rs.Close
Set rs = Nothing
cnn.Close
Set cnn = Nothing
fo.Close
Set fo = Nothing
Set fso = Nothing
pbChanged = True
pSubcode = 0
UnpackFile = True
End Function
Function PackFile(fileSrc, fileDst, pbChanged, pSubcode)
PackFile = False
End Function
Private Sub showTable(byref fo, byref cnn, byval tableName)
Dim rsTable
Dim i
Dim fieldCount
Dim data
Set rsTable = cnn.Execute("SELECT * FROM " & tableName & " ORDER BY 1")
fieldCount = rsTable.Fields.count
rsTable.MoveFirst
Do While Not rsTable.EOF
For i = 0 To fieldCount - 1
if i = 0 Then
data = rsTable(i).Value
Else
data = data & vbTab & rsTable(i).Value
End If
Next
rsTable.MoveNext
fo.WriteLine data
Loop
rsTable.Close
Set rsTable = Nothing
End Sub
</script>
</scriptlet>
3. WinMerge 배포 플러그인을 자동화하거나 SqliteToText.sct를 명시하고 비교
실행합니다.
따라서 테이블, 트리거, 뷰, 인덱스 정보 및 테이블 내용을 비교합니다.
해설
SQLite 메타 정보
sqlite_master
SQLite는 sqlite_master에 table, index, view, trriger의 정보를 저장하고 있다.
이 테이블을 취득하면 다음 정보를 얻을 수 있습니다.
이름
설명
유형
객체의 정보를 나타냅니다. 'table', 'index', 'view', 'trigger' 중 하나
이름
객체 이름
rootpage
테이블 및 인덱스에 대한 루트 b-tree 페이지의 페이지 번호
sql
SQL
이 테이블에는 임시 테이블의 정보가 저장되지 않습니다.
임시 테이블의 정보를 얻으려면 다음 테이블에서 데이터를 얻습니다.
· sqlite_temp_master
테이블의 열 정보
여기에서는 취득하고 있지 않지만, 테이블의 열 정보는 하기의 SQL로 취득할 수 있다.
PRAGMA table_info('テーブル名');
시퀀스 정보
AUTOINCREMENT를 PRIMARY 키로 작성했을 때 sqlite_sequence가 작성된다.
AUTOINCREMENT는 sqlite_sequence를 바탕으로 만들어진다.
커맨드 라인을 이용한 덤프 방법
최신의 커맨드 라인 툴이 있으면, 이하의 방법으로 유사한 정보를 취득할 수 있다.
sqlite3 test.sqlite .dump
참고
The SQLite Database File Format
h tp // w w. sq ぃ. 오 rg / 후우 후마 t. HTML
Reference
이 문제에 관하여(WinMerge에서 SQLite를 비교하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/mima_ita/items/dd4fedcd690b44cea4b5
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
<scriptlet>
<implements type="Automation" id="dispatcher">
<property name="PluginEvent">
<get/>
</property>
<property name="PluginDescription">
<get/>
</property>
<property name="PluginFileFilters">
<get/>
</property>
<property name="PluginIsAutomatic">
<get/>
</property>
<method name="UnpackFile"/>
<method name="PackFile"/>
</implements>
<script language="VBS">
Option Explicit
Function get_PluginEvent()
get_PluginEvent = "FILE_PACK_UNPACK"
End Function
Function get_PluginDescription()
get_PluginDescription = "SqliteToText"
End Function
Function get_PluginFileFilters()
get_PluginFileFilters = "\.sqlite(\..*)?$;\.sqlite3(\..*)?$;\.db(\..*)?$"
End Function
Function get_PluginIsAutomatic()
get_PluginIsAutomatic = True
End Function
Function UnpackFile(fileSrc, fileDst, pbChanged, pSubcode)
Dim cnn
Dim Filename
Dim rs
Dim i
Dim tableNameDict
Dim name
Dim fso
Dim fo
Set fso = CreateObject("Scripting.FileSystemObject")
Set fo = fso.CreateTextFile(fileDst, True)
Set cnn = CreateObject("ADODB.Connection")
cnn.CursorLocation = 3 '
FileName = "test.sqlite"
cnn.Open "DRIVER=SQLite3 ODBC Driver;Database=" & fileSrc & ";"
Set rs = cnn.Execute("SELECT * FROM sqlite_master;")
i = 0
rs.MoveFirst
Do While Not rs.EOF
name = rs.Fields("Name").Value
fo.WriteLine "[" & name & "]"
fo.WriteLine rs.Fields("sql").Value
If rs.Fields("Type").Value = "table" Then
call showTable(fo, cnn , name)
End if
rs.MoveNext
i = i + 1
Loop
rs.Close
Set rs = Nothing
cnn.Close
Set cnn = Nothing
fo.Close
Set fo = Nothing
Set fso = Nothing
pbChanged = True
pSubcode = 0
UnpackFile = True
End Function
Function PackFile(fileSrc, fileDst, pbChanged, pSubcode)
PackFile = False
End Function
Private Sub showTable(byref fo, byref cnn, byval tableName)
Dim rsTable
Dim i
Dim fieldCount
Dim data
Set rsTable = cnn.Execute("SELECT * FROM " & tableName & " ORDER BY 1")
fieldCount = rsTable.Fields.count
rsTable.MoveFirst
Do While Not rsTable.EOF
For i = 0 To fieldCount - 1
if i = 0 Then
data = rsTable(i).Value
Else
data = data & vbTab & rsTable(i).Value
End If
Next
rsTable.MoveNext
fo.WriteLine data
Loop
rsTable.Close
Set rsTable = Nothing
End Sub
</script>
</scriptlet>
SQLite 메타 정보
sqlite_master
SQLite는 sqlite_master에 table, index, view, trriger의 정보를 저장하고 있다.
이 테이블을 취득하면 다음 정보를 얻을 수 있습니다.
이름
설명
유형
객체의 정보를 나타냅니다. 'table', 'index', 'view', 'trigger' 중 하나
이름
객체 이름
rootpage
테이블 및 인덱스에 대한 루트 b-tree 페이지의 페이지 번호
sql
SQL
이 테이블에는 임시 테이블의 정보가 저장되지 않습니다.
임시 테이블의 정보를 얻으려면 다음 테이블에서 데이터를 얻습니다.
· sqlite_temp_master
테이블의 열 정보
여기에서는 취득하고 있지 않지만, 테이블의 열 정보는 하기의 SQL로 취득할 수 있다.
PRAGMA table_info('テーブル名');
시퀀스 정보
AUTOINCREMENT를 PRIMARY 키로 작성했을 때 sqlite_sequence가 작성된다.
AUTOINCREMENT는 sqlite_sequence를 바탕으로 만들어진다.
커맨드 라인을 이용한 덤프 방법
최신의 커맨드 라인 툴이 있으면, 이하의 방법으로 유사한 정보를 취득할 수 있다.
sqlite3 test.sqlite .dump
참고
The SQLite Database File Format
h tp // w w. sq ぃ. 오 rg / 후우 후마 t. HTML
Reference
이 문제에 관하여(WinMerge에서 SQLite를 비교하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/mima_ita/items/dd4fedcd690b44cea4b5
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(WinMerge에서 SQLite를 비교하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/mima_ita/items/dd4fedcd690b44cea4b5텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)