Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
1512to1516
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Textdatei einlesen und SQL generieren

Textdatei einlesen und SQL generieren
09.09.2016 14:24:05
Philipp
Hallo zusammen,
ich arbeite jetzt seit längerem an einem Problem.
Und zwar möchte ich eine Textdatei einlesen, die mit Semikolon getrennt ist und sofort daraus ein Insert SQL generieren.
Ein Import nach Excel ist nicht gut, da dann die Werte aus der Textdatei verändert werden und so nicht mehr in die Datenfelder passen.
Hier ein Auszug aus der Textdatei:
ERFOLG;Sep01;01.09.2016;92.085100000;26.08.2016;Test Tester;
INVEST;0;01.09.2015;100.0000000000;01.09.2015;Test Tester;
Draus soll ein Insert SQL werden:
insert into BPPUDBA.stpblmpi(ART, INDEXMODELL, GUELTIG_DAT,
WERT, AEND_DAT, BEARBEITER) VALUES
('ERFOLG', '01.09.2001', 'Sep01', 92.085100000, '26.08.2016','Test Tester');
insert into BPPUDBA.stpblmpi(ART, INDEXMODELL, GUELTIG_DAT,
WERT, AEND_DAT, BEARBEITER) VALUES
('INVEST', '0', '01.09.2015', 100.0000000000, '01.09.2015','Test Tester');
Ich finde leider im Netz kein passendes Beispiel, wie ich das am Besten umsetzen kann.
Könnt ihr mir helfen?
Gruß

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Textdatei einlesen und SQL generieren
09.09.2016 15:37:19
EtoPHG
Hallo Philipp,
Ich nehme an, du findest genug Beispiele um sequentielle Textdateien Record für Record zu lesen.
Den eingelesenen Record in die folgende Funktion (in einem Standardmodul) einlesen und raus kommt der Values-Teil des SQL.
Public Function makeInsertValues(sInput As String, _
Optional sSeparatorIn As String = ";", _
Optional sSeparatorOut As String = ",", _
Optional sTextDelimiterOut As String = "'") As String
Dim tmp, lX As Long
tmp = Split(sInput, sSeparatorIn)
makeInsertValues = "("
For lX = 0 To UBound(tmp)
If IsNumeric(tmp(lX)) Then
makeInsertValues = makeInsertValues & tmp(lX) & sSeparatorOut
Else
makeInsertValues = makeInsertValues & sTextDelimiterOut & _
tmp(lX) & sTextDelimiterOut & sSeparatorOut
End If
Next lX
If Len(makeInsertValues) > 1 Then _
makeInsertValues = Left(makeInsertValues, Len(makeInsertValues) - 1)
makeInsertValues = makeInsertValues & ")"
End Function

Jetzt noch zusammensetzten und fertig ist der SQL, also z.B. so:
MsgBox "insert into BPPUDBA.stpblmpi" & vbCrLf & _
" (ART, INDEXMODELL, GUELTIG_DAT, WERT, AEND_DAT, BEARBEITER)" & vbCrLf & _
" VALUES" & vbCrLf & _
makeInsertValues(inputRecord)
Anmerkungen:
Dein Textrecord darf beim letzten Datenwert kein abschliessendes Trennzeichen mehr beinhalten, sonst wird angenommen, dass noch (Null)Wert folgt.
Dein 1 Beispiel des SQL's ist falsch, da Feldwerte von Feld 2 und 3 vertauscht sind!
Gruess Hansueli
Anzeige
AW: Textdatei einlesen und SQL generieren
09.09.2016 15:54:40
UweD
Hallo
hab mal was gebaut..
Sub MakeSQL()

    Dim fileName As String, textRow As String, sqlFile As String, Arr
    
    fileName = "C:\Temp\Test.txt"
    sqlFile = "C:\Temp\SQLDatei.txt"
    Close #1: Close #2
        
    Open fileName For Input As #1
    Open sqlFile For Output As #2
    
    Do While Not EOF(1)
        Line Input #1, textRow
        
        Arr = Split(textRow, ";")
        Print #2, "insert into BPPUDBA.stpblmpi(ART, INDEXMODELL, GUELTIG_DAT,"
        Print #2, "WERT, AEND_DAT, BEARBEITER) VALUES "
        Print #2, "('" & Arr(0) & "', '" & Arr(2) & "', '" & Arr(1) & "', " & Arr(3) & ", '" & _
            Arr(4) & "', '" & Arr(5) & "');"
    Loop
    Close #1: Close #2

End Sub

VBA/HTML-CodeConverter, AddIn für Office 2002-2016 - in VBA geschrieben von Lukas Mosimann. Projektbetreuung:RMH Software & Media

Code erstellt und getestet in Office 15 - mit VBAHTML 12.6.0

Unklar ist mir, ob die Wert2 und 3 vertauschen möchtest oder nicht...
Gruß UweD
Anzeige

302 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige