fb:porticula NoPaste
Bezeichner in SQL-Dump in Upper-Case umwandeln
Uploader: | Sebastian |
Datum/Zeit: | 07.04.2014 13:12:12 |
' Alle Bezeichner in einem SQL-Dump in "Upper Case" umwandeln
' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
'
' Bei einer bestehenden und zu aendernden Anwendung hatte ich das Problem,
' dass beim MySQL-Dump der DB (von Windows aus) die komplett grossgeschriebenen
' Bezeichner zu "Lower Case" (Kleinbuchstaben) verwandelt wurden. Nach einem
' Import unter Linux stellte sich heraus, dass dies wegen Case-Sensitivity fuer
' die Anwendung ein Problem war. Also musste die frisch importierte Datenbank
' noch mal geDROPt werden und mit komplett grossgeschriebenen Bezeichnern neu
' importiert werden. Um nicht alle Bezeichner im SQL-Dump von Hand korrigieren
' zu muessen, hier das folgende kleine Programm.
'
' Beispiel:
'
' CREATE TABLE `rel_foobar` (
' `id` int(11) NOT NULL AUTO_INCREMENT,
' `test_id_a` int(11) NOT NULL,
' `test_id_b` int(11) NOT NULL, [...]
'
' wird zu
'
' CREATE TABLE `REL_FOOBAR` (
' `ID` int(11) NOT NULL AUTO_INCREMENT,
' `TEST_ID_A` int(11) NOT NULL,
' `TEST_ID_B` int(11) NOT NULL, [...]
'
' Es werden nur Bezeichner in `Hochkommas` erfasst.
'
' Verwendung auf eigene Gefahr! Kostenlose Ueberlassung ohne jede Haftung.
'
' Achtung: Zieldatei output.sql wird ueberschrieben!
'
Dim As String Zeichen, Puffer="", Neu
Dim As Integer BezeichnerOffen = 0, Zeile = 1, Ersetzungen = 0
Open "C:\freebasic\Dump20140407.sql" For Binary As #1
Open "c:\freebasic\output.sql" For Binary As #2
Do Until Eof(1)
Zeichen = Space(1)
Get #1,,Zeichen
If (Zeichen = Chr(10)) Then Zeile+=1
If (Zeichen = "`") Then
If (BezeichnerOffen = 1) Then
Neu = UCase(Puffer)
Print Using "##### & => &"; Zeile; Puffer; Neu
Put #2,,Neu
Put #2,,Zeichen
Puffer = ""
BezeichnerOffen = 0
Ersetzungen += 1
Else
BezeichnerOffen = 1
Puffer = ""
Put #2,,Zeichen
End If
Else
If (BezeichnerOffen = 1) Then
Puffer += Zeichen
Else
Put #2,,Zeichen
End If
End If
Loop
Close #2
Close #1
Print Zeile & " Zeilen, " & Ersetzungen & " Ersetzungen."
Getkey
End