Abfrage als CSV Datei speichern

  • WPF
  • .NET 5–6

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von Thomas2705.

    Abfrage als CSV Datei speichern

    Guten Tag
    ich möchte das Abfrageergebnis direkt als CSV Datei schreiben und habe keinen richtigen Ansatz. Das habe ich bisher:

    VB.NET-Quellcode

    1. Dim CSV_Abfrage = "SELECT ds_stamm.*,ds_firma.*
    2. FROM ds_stamm
    3. INNER JOIN ds_firma
    4. ON ds_stamm.ds_stamm_id
    5. INTO OUTFILE 'Desktop'
    6. FIELDS TERMINATED BY ','
    7. ENCLOSED BY '/'
    8. LINES TERMINATED BY '\n';"


    Also die normale Abfrage. In dieser ist auch bereits der Ort der zu speichernden CSV Datei angegeben; hier Desktop. Als nächstes erstelle ich die Verbindung zur Datenbank und dann weis ich nicht weiter:

    VB.NET-Quellcode

    1. Using connection As New MySqlConnection(My.Settings.db_vision_client)
    2. Using MyAdapter As New MySqlDataAdapter(CSV_Abfrage, connection)
    3. ???
    4. End Using
    5. End Using


    Gibt es vielleicht einen Lösungsansatz. Wichtig ist mir die CSV Datei ohne Umwege.
    Diese Variante funktioniert auch nicht:

    VB.NET-Quellcode

    1. Dim CSV_Abfrage = "SELECT ds_stamm.*,ds_firma.*
    2. FROM ds_stamm
    3. INNER JOIN ds_firma
    4. ON ds_stamm.ds_stamm_id"
    5. Using connection As New MySqlConnection(My.Settings.db_vision_client)
    6. Using MyAdapter As New MySqlDataAdapter(CSV_Abfrage, connection)
    7. IO.File.WriteAllLines(CSV_Abfrage.ToArray, System.Text.Encoding.Default)
    8. End Using
    9. End Using

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Thomas2705“ ()

    Da musst du entweder die Abfrage als SQL ausführen:

    VB.NET-Quellcode

    1. SELECT * Into Outfile 'Dateiname.csv' FIELDS TERMINATED By ';'
    2. OPTIONALLY ENCLOSED BY '"'
    3. ESCAPED BY '\\'
    4. LINES TERMINATED BY '\n'
    5. FROM tabelle;


    und er erstellt dir die Datei.

    Oder du machst es über einen DataReader und schreibst dir deine eigene CSV Datei.

    Oder worauf willst du hinaus? du kannst ja, sobald die Datei erstellt ist, diese mittels dem Texfieldparser wieder auslesen
    Danke für Eure Antworten.
    ich habe den Code folgendermaßen angepasst:

    VB.NET-Quellcode

    1. Dim CSV_Abfrage = "SELECT ds_stamm.*,ds_firma.*
    2. FROM ds_stamm
    3. INNER JOIN ds_firma
    4. ON ds_stamm.ds_stamm_id
    5. INTO OUTFILE 'Desktop/Daten.csv' "
    6. Using connection As New MySqlConnection(My.Settings.db_vision_client)
    7. Dim cmd As New MySqlCommand(CSV_Abfrage, connection)
    8. cmd.Connection.Open()
    9. cmd.ExecuteNonQuery()
    10. End Using


    Es kommt die Fehlermeldung: Benutzer 'client_vision_1'@'%' hat keine Zugriffsberechtigung (verwendetes Passwort: Ja)
    Dieser Fehler kommt auch wenn ich die Abfrage direkt in der Datenbank über phpmyAdmin ausführe. Allerdings ist die Verbindungszeichenfolge in "Settings.db_vision_client" hinterlegt. Beim Abfragen "normaler" Werte wird keine extra Zugriffsberechtigung angefordert.