2017-07-28 12 views
1

Ich brauche eine Möglichkeit, einen SQL-Befehl auszuführen und dann die Ergebnisse in eine JSON-formatierte Textdatei zu exportieren.SQL-Abfrage in JSON-formatierte Textdatei exportieren

Ich habe diesen Link:

Aber ich verstehe nicht, den CREATE_COLUMN Abschnitt seiner Aussage, noch wirklich die Terminologie er verwendet, um zu verstehen, wie es zu meiner DB bezieht.

Kann jemand bitte sein Beispiel für mich auf eine Abfrage so vereinfachen?

SELECT * FROM thisismy.database; 

Wenn ich die oben mit der INTO OUTFILE Befehl tun, erhalte ich Daten, die wie folgt aussieht:

1  Armand   Warren 56045 Taiwan, Province of China 0  0 
2  Xenos Salas  71090  Liberia  0    0 
3  Virginia Whitaker 62723 Nicaragua 0      0 
4  Kato Patrick 97662 Palau 0      0 
5  Cameron  Ortiz P9C5B6 Eritrea 0    0 

Aber ich brauche es wie folgt aussehen:

{ "aaData": [ 
    [ "1", "Armand", "Warren", "56045", "Taiwan, Province of China" ], 
    [ "2", "Xenos", "Salas", "71090", "Liberia" ], 
    [ "3", "Virginia", "Whitaker", "62723", "Nicaragua" ], 
    [ "4", "Kato", "Patrick", "97662", "Palau" ], 
    [ "5", "Cameron", "Ortiz", "P9C 5B6", "Eritrea" ] 
] } 

Beliebig Vorschläge?

Dank

Edit: Ich betreibe MariaDB wenn das

+0

Siehe https://mariadb.com/kb/en/mariadb/connect-json-table-type/ –

Antwort

1
SELECT CONCAT('[\n\t', GROUP_CONCAT(
     COLUMN_JSON(
      COLUMN_ADD(
       COLUMN_CREATE('id', id) 
       , 'name', name 
       , 'price', price 
      ) 
     ) 
     ORDER BY id 
     SEPARATOR ',\n\t' 
    ), '\n]') AS json 
    FROM product \G 

außer COLUMN_CREATE Ignorieren alles hilft. Hier findet die JSON-Erstellung statt. OK, so haben wir:

COLUMN_JSON(
     COLUMN_ADD(
      COLUMN_CREATE('id', id) 
      , 'name', name 
      , 'price', price 
     ) 
    ) 

COLUMN_ADD die Funktion, die die Spalten der JSON hinzufügt. Jedes Argument ist ein Schlüssel, der mit seinem Wert gepaart ist. Also 'name' ist, was der Schlüssel in dem JSON-Objekt sein wird und name ist, was der Wert sein wird. In diesem Fall ist es die Spalte name aus der Tabelle product.

Nehmen wir an, Sie möchten Ihre users Tabelle abfragen und ihre Vornamen, Nachnamen und ID erhalten. Dies ist, was Ihre Abfrage aussehen würde:

SELECT CONCAT('[\n\t', GROUP_CONCAT(
     COLUMN_JSON(
      COLUMN_ADD(
       COLUMN_CREATE('id', id) 
       , 'first_name', first_name 
       , 'last_name', last_name 
      ) 
     ) 
     ORDER BY id 
     SEPARATOR ',\n\t' 
    ), '\n]') AS json 
    FROM users \G 

Und am Ende des COLUMN_JSON Befehl wir AS json haben, die sie als JSON-Typ wirft Sie wollen.

+0

Vielen Dank, aber ich bekomme einen Fehler mit diesem Code. Hier ist ein klareres Beispiel für das, was ich verwendet habe: https://pastebin.com/FEFvvaXm – user7433145

+0

Sie müssen aus einer Tabelle auswählen, keine Datenbank. –

+0

Funktioniert immer noch nicht. Der Name meiner Datenbank (aus Datenschutzgründen geändert) lautet 'cubesat' und der Name meiner Tabelle ist 'places'. Alle meine Daten werden in dieser 'Orte'-Tabelle gespeichert. Also, mit Ihrem Befehl, mache ich aus cubesat.places den DB/Tabellennamen anzugeben. Es wird nicht funktionieren, wenn ich nur die Tabelle ohne den DB-Namen angeben - noch mit einer Variation von db/Tabellenname. Aktualisiert Pastebin: https://pastebin.com/yi9j76TG – user7433145

Verwandte Themen