Ankündigung

Einklappen
Keine Ankündigung bisher.

Select in outfile

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Select in outfile

    Hi,
    ich möchte aus einer bestehenden Tabelle bestimmte Datensätze in eine csv-Datei verschieben, klappt auch mit select into outfile ganz gut. 2 Probleme habe ich noch.
    1. Wie kann ich die Spaltenüberschriften mit übertragen
    2. Wie kann ich die Felder, die NULL enthalten als 0 übertragen oder leer lassen (also nicht \N im csv-file an der Stelle)

    Kann jemand helfen ?

    Danke, bis denn

    Marco


  • #2
    Re: Select in outfile

    Zitat von picard2002
    2. Wie kann ich die Felder, die NULL enthalten als 0 übertragen oder leer lassen (also nicht \N im csv-file an der Stelle)
    Mit IFNULL() kannst du diese Fälle abfangen und entsprechend einen anderen Wert angeben.

    Kommentar


    • #3
      Danke xabbuh,
      habe mir IFNULL angeschaut, weiss nur nicht wie ich den für alle spalten verwenden soll...

      Hier mein SQL-Befehl:
      SELECT * INTO OUTFILE Filename.csv FIELDS TERMINATED BY ';' ENCLOSED BY '"\"' FROM Tabellenname WHERE tagescode = gesuchter wert

      das sind dann so ca 2000 zeilen, 70 spalten, und ab und zu stehen halt NULLen drin...

      bis denn

      Marco

      Kommentar


      • #4
        Zitat von picard2002
        habe mir IFNULL angeschaut, weiss nur nicht wie ich den für alle spalten verwenden soll...
        In dem du mit IFNULL alle Spalten testest, die relevant sind

        Code:
        SELECT IFNULL(spalte1, 'bloss kein NULL', spalte1), IFNULL(spalte2, 'schon wieder NULL', spalte2), usw.

        Kommentar


        • #5
          Prima, falls du meinen Beitrag gelesen hast, es handelt sich um ca. 70 Spalten, Tendenz nach oben, ich wollte keinen Roman schreiben (das hätte ich nach Lesen der Beschreibung von IFNULL gekonnt), sondern das ganze möglichst kurz und allgemein halten (neue Bezeichnung einer spalte würde jedesmal Änderung der Skripte bedeuten)

          Marco

          Kommentar


          • #6
            Mein Code war falsch
            Code:
            SELECT IFNULL(spalte1, 'default-wert'), ..
            Und weißt du was, mir und MySQL ist es sch* egal ob du eine 70 Spalten-Tabelle einmalig mit IFNULL-Abfragen versehen musst..Das ist dein Problem, was du willst ist irrelevant wenns nunmal nicht geht. Aber kannst dich gern an die MySQL-Entwickler halten, die haben so pampige Statements sicher genauso gern wie ich

            Kommentar


            • #7
              Huch sind wir empfindlich, es gibt auch pampige antworten, die nicht erwünscht sind, siehe deine bei meiner anderen anfrage, nimm dir ein beispiell an xabbuh, kurz und bündig mit allem was ich benötige, möchte ich noch einen unnötigen kommentar, werde ich dir bitte bei in meiner anfrage hinzufügen.
              das ich mich z.B. mit sql vertraut machen sollte, steht ausser frage, sonst müsste ich keine beiträge schreiben und antworten von dir erhalten !
              ein hinweis, ich greife aus anderen programmen auf die datenbanken zu (HMI-software)

              Kommentar


              • #8
                Zitat von picard2002
                Huch sind wir empfindlich, es gibt auch pampige antworten, die nicht erwünscht sind, siehe deine bei meiner anderen anfrage, nimm dir ein beispiell an xabbuh, kurz und bündig mit allem was ich benötige
                Ich bin eben ich und ich bewunder manche hier im Forum auch für ihre Geduld, aber wenn ich den Eindruck habe, der Fragensteller ist zu faul zum selber Suchen oder denkt bei seinem eigenen Problem nicht mit, dann kriegt der User auch eine dementsprechende Antwort. Dass ich nicht immer richtig liege steht außer Frage.

                Aber einfach zu sagen, hey das will ich aber anders lösen, wenns eben nunmal nicht anders geht ist auch sehr seltsam und hat so einen "Einzelkind"-Charakter ("will aba").

                Kommentar


                • #9
                  Ich sage nicht, das will ich aber so, sondern suche nach einer allgemeinen Lösung, da ich mit unterschiedlichen Spaltenbezeichnungen arbeiten muss und nicht jedesmal die skripte ändern möchte
                  das die obige lösung funktioniert steht ausser frage, aber evtl. gibt es ja noch eine (wie SELECT *...)
                  ausserdem wäre punkt 1 meiner anfrage viel interessanter für mich, da ich den header in der datei benötige, und dazu finde ich im handbuch zur zeit nichts (mysql 5 vom addison)

                  marco

                  Kommentar


                  • #10
                    Dann bastell dir eine Funktion, die die Spaltennamen selbst herausfindet und ein entsprechendes SQL-Statement generiert.

                    Kommentar


                    • #11
                      Da du zum Einen die Spaltennamen als Überschrift benötigst und zum anderen IFNULL() nicht für jede Spalte von Hand schreiben möchtest, solltest du dir wohl am besten in einem kleinen Script zunächst mittels SHOW COLUMNS / SHOW FIELDS die Spaltenbezeichnungen holen und anschließend die Abfrage dynamisch zusammenbauen. Dann könntest du allerdings auch auf SELECT INTO OUTFILE verzichten und die Ergebnismenge in deinem Script direkt in eine CSV-Datei schreiben.

                      Kommentar

                      Lädt...
                      X