Buchempfehlung
Visual Basic 6 Kochbuch
Visual Basic 6 Kochbuch
Viele praktische Tipps zum Programmieren mit Visual Basic 6, die sich oft auch auf FB übertragen lassen. [Mehr Infos...]
FreeBASIC-Chat
Es sind Benutzer im FreeBASIC-Chat online.
(Stand:  )
FreeBASIC bei Twitter
Twitter FreeBASIC-Nachrichten jetzt auch über Twitter erhalten. Follow us!

fb:porticula NoPaste

Info
Info / Hilfe
Liste
Übersicht / Liste
Neu
Datei hochladen
Suche
Quellcode suchen
Download
Dateidownload

Bezeichner in SQL-Dump in Upper-Case umwandeln

Uploader:AdministratorSebastian
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