Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Einsteigerfragen
  4. sql daten exportieren

NEWS

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    22
    1
    1.2k

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    9.2k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    14
    1
    2.5k

sql daten exportieren

Geplant Angeheftet Gesperrt Verschoben Einsteigerfragen
9 Beiträge 6 Kommentatoren 967 Aufrufe 6 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • D Offline
    D Offline
    darth
    schrieb am zuletzt editiert von
    #1

    Hallo

    ich möchte alle Daten (Stromzählerwerte) aus dem sql(sqliteDB) in ein csv exportieren. Der Adapter hat zwar eine Exportfunktion aber die exportiert nur 500 Datensätze. Einstellungen um diese Grenze zu überspringen konnte ich leider nicht finden. Welchen Weg gibt es?

    Danke

    David G.D 1 Antwort Letzte Antwort
    0
    • D darth

      Hallo

      ich möchte alle Daten (Stromzählerwerte) aus dem sql(sqliteDB) in ein csv exportieren. Der Adapter hat zwar eine Exportfunktion aber die exportiert nur 500 Datensätze. Einstellungen um diese Grenze zu überspringen konnte ich leider nicht finden. Welchen Weg gibt es?

      Danke

      David G.D Online
      David G.D Online
      David G.
      schrieb am zuletzt editiert von
      #2

      @darth

      Eigentlich hasse ich die Antwort ja.
      Aber gefühlt sind die ersten 10 Google-Treffer von "sqlite csv Export" die Lösung.

      Zeigt eure Lovelace-Visualisierung klick
      (Auch ideal um sich Anregungen zu holen)

      Meine Tabellen für eure Visualisierung klick

      1 Antwort Letzte Antwort
      0
      • D Offline
        D Offline
        darth
        schrieb am zuletzt editiert von
        #3

        ja schon, ich dachte das es in IObroker etwas passendes geben würde anstatt mich mit einem SQLite explorer direkt auf die Datenbank zu klinken. Schade.

        Viele Grüße

        David G.D F 2 Antworten Letzte Antwort
        0
        • D darth

          ja schon, ich dachte das es in IObroker etwas passendes geben würde anstatt mich mit einem SQLite explorer direkt auf die Datenbank zu klinken. Schade.

          Viele Grüße

          David G.D Online
          David G.D Online
          David G.
          schrieb am zuletzt editiert von
          #4

          @darth

          Gibt's ja evtl.
          Weiß es aber auch nicht.

          Zeigt eure Lovelace-Visualisierung klick
          (Auch ideal um sich Anregungen zu holen)

          Meine Tabellen für eure Visualisierung klick

          1 Antwort Letzte Antwort
          0
          • D darth

            ja schon, ich dachte das es in IObroker etwas passendes geben würde anstatt mich mit einem SQLite explorer direkt auf die Datenbank zu klinken. Schade.

            Viele Grüße

            F Offline
            F Offline
            fastfoot
            schrieb am zuletzt editiert von
            #5

            @darth probiere mal, dauert aber mit SQLITE etwas

            /**
             * Zweck:   Exportiert History Daten in eine CSV, wandelt optional in Exceldatum incl. Sommer- und Winterzeit
             * Datum:   19.07.2022
             * Autor:   @fastfoot
             */
            
            const fileName = '/opt/iobroker/ts_number.csv';
            const exportForExcel = false;  //wenn true wird in ein Excel Datum gewandelt()
            
            sendTo('sql.0', 'query', 'select * from ts_number', r => {
                jsonToCSV(r.result, fileName)
                log('done!', 'warn')
            })
            
            //converts a JSON table to csv file
            function jsonToCSV(records, fileName) {
                const fs = require('fs');
                const CRLF = '\r\n';
                const DELIM = ';';
                const TXTQUAL = '"';
                let csv = Object.keys(records[0]).slice().join(DELIM) + CRLF;
            
                for (let record of records) {
                    for (let rec of Object.keys(record)) {
                        if (typeof record[rec] == 'number') {
                            if (exportForExcel && rec === 'ts') {
                                const ts = record[rec];
                                const dst = isDST(ts);
                                if (dst) {
                                    record[rec] = ts / 864e5 + 25569 + 2 / 24;
                                } else {
                                    record[rec] = ts / 864e5 + 25569 + 1 / 24;
                                }
                            }
                            csv += record[rec].toString().replace('.', ',') + DELIM;
                        } else {
                            csv += TXTQUAL + record[rec] + TXTQUAL + DELIM;
                        }
                    }
                    csv += CRLF;
                }
                fs.writeFile(fileName, csv, err => {
                    if (err) console.log(err);
                })
            }
            
            //berechnet ob Sommer- oder Winterzeit(letzter Sonntag im März und letzter Sonntag im Novemver!!!)
            function isDST(ts) {
                const dat = new Date(ts);
                const y = dat.getFullYear();
                const ls1 = new Date(y, 3, 1);
                const ls2 = new Date(y, 11, 1);
                ls1.getDay() > 0 ? ls1.setDate(ls1.getDate() - 7 + (7 - ls1.getDay())) : ls1.setDate(ls1.getDate() - 7);
                ls2.getDay() > 0 ? ls2.setDate(ls2.getDate() - 7 + (7 - ls2.getDay())) : ls2.setDate(ls2.getDate() - 7);
                ls1.setHours(3, 0, 0, 0);
                ls2.setHours(3, 0, 0, 0);
                return dat >= ls1 && dat <= ls2;
            }
            

            iobroker läuft unter Docker auf QNAP TS-451+
            SkriptRecovery: https://forum.iobroker.net/post/930558

            OliverIOO AllElectrifiedA 2 Antworten Letzte Antwort
            0
            • D Offline
              D Offline
              darth
              schrieb am zuletzt editiert von
              #6

              ok danke erstmal. Wo führt man dieses Skript aus, einfach als neues Script unter Scripte oder als bash script auf der Konsole des PI?

              BananaJoeB 1 Antwort Letzte Antwort
              0
              • D darth

                ok danke erstmal. Wo führt man dieses Skript aus, einfach als neues Script unter Scripte oder als bash script auf der Konsole des PI?

                BananaJoeB Offline
                BananaJoeB Offline
                BananaJoe
                Most Active
                schrieb am zuletzt editiert von
                #7

                @darth anhand des sendTo im Scripte würde ich sagen unter Scripte als JS-Script

                ioBroker@Ubuntu 24.04 LTS (VMware) für: >260 Geräte, 5 Switche, 7 AP, 9 IP-Cam, 1 NAS 42TB, 1 ESXi 15TB, 4 Proxmox 1TB, 1 Hyper-V 48TB, 14 x Echo, 5x FireTV, 5 x Tablett/Handy VIS || >=160 Tasmota/Shelly || >=95 ZigBee || PV 8.1kW / Akku 14kWh || 2x USV 750W kaskadiert || Creality CR-10 SE 3D-Drucker

                1 Antwort Letzte Antwort
                0
                • F fastfoot

                  @darth probiere mal, dauert aber mit SQLITE etwas

                  /**
                   * Zweck:   Exportiert History Daten in eine CSV, wandelt optional in Exceldatum incl. Sommer- und Winterzeit
                   * Datum:   19.07.2022
                   * Autor:   @fastfoot
                   */
                  
                  const fileName = '/opt/iobroker/ts_number.csv';
                  const exportForExcel = false;  //wenn true wird in ein Excel Datum gewandelt()
                  
                  sendTo('sql.0', 'query', 'select * from ts_number', r => {
                      jsonToCSV(r.result, fileName)
                      log('done!', 'warn')
                  })
                  
                  //converts a JSON table to csv file
                  function jsonToCSV(records, fileName) {
                      const fs = require('fs');
                      const CRLF = '\r\n';
                      const DELIM = ';';
                      const TXTQUAL = '"';
                      let csv = Object.keys(records[0]).slice().join(DELIM) + CRLF;
                  
                      for (let record of records) {
                          for (let rec of Object.keys(record)) {
                              if (typeof record[rec] == 'number') {
                                  if (exportForExcel && rec === 'ts') {
                                      const ts = record[rec];
                                      const dst = isDST(ts);
                                      if (dst) {
                                          record[rec] = ts / 864e5 + 25569 + 2 / 24;
                                      } else {
                                          record[rec] = ts / 864e5 + 25569 + 1 / 24;
                                      }
                                  }
                                  csv += record[rec].toString().replace('.', ',') + DELIM;
                              } else {
                                  csv += TXTQUAL + record[rec] + TXTQUAL + DELIM;
                              }
                          }
                          csv += CRLF;
                      }
                      fs.writeFile(fileName, csv, err => {
                          if (err) console.log(err);
                      })
                  }
                  
                  //berechnet ob Sommer- oder Winterzeit(letzter Sonntag im März und letzter Sonntag im Novemver!!!)
                  function isDST(ts) {
                      const dat = new Date(ts);
                      const y = dat.getFullYear();
                      const ls1 = new Date(y, 3, 1);
                      const ls2 = new Date(y, 11, 1);
                      ls1.getDay() > 0 ? ls1.setDate(ls1.getDate() - 7 + (7 - ls1.getDay())) : ls1.setDate(ls1.getDate() - 7);
                      ls2.getDay() > 0 ? ls2.setDate(ls2.getDate() - 7 + (7 - ls2.getDay())) : ls2.setDate(ls2.getDate() - 7);
                      ls1.setHours(3, 0, 0, 0);
                      ls2.setHours(3, 0, 0, 0);
                      return dat >= ls1 && dat <= ls2;
                  }
                  
                  OliverIOO Offline
                  OliverIOO Offline
                  OliverIO
                  schrieb am zuletzt editiert von
                  #8

                  @fastfoot sagte in sql daten exportieren:

                  select * from ts_number

                  als sql würde ich das hier vorschlagen

                  select dp.name,val.ts,val.val,val.ack,val.q from ts_number as val, datapoints as dp where val.id=dp.id
                  

                  sonst kann man die datenpunktbezeichnungen schlecht lesen.

                  sqlite hat selbst auch einen modus um csv dateien zu schreiben.
                  https://stackoverflow.com/questions/6076984/sqlite-how-do-i-save-the-result-of-a-query-as-a-csv-file
                  das dürfte schneller gehen, muss man dann aber als bash befehl aufrufen.

                  Meine Adapter und Widgets
                  TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
                  Links im Profil

                  1 Antwort Letzte Antwort
                  1
                  • F fastfoot

                    @darth probiere mal, dauert aber mit SQLITE etwas

                    /**
                     * Zweck:   Exportiert History Daten in eine CSV, wandelt optional in Exceldatum incl. Sommer- und Winterzeit
                     * Datum:   19.07.2022
                     * Autor:   @fastfoot
                     */
                    
                    const fileName = '/opt/iobroker/ts_number.csv';
                    const exportForExcel = false;  //wenn true wird in ein Excel Datum gewandelt()
                    
                    sendTo('sql.0', 'query', 'select * from ts_number', r => {
                        jsonToCSV(r.result, fileName)
                        log('done!', 'warn')
                    })
                    
                    //converts a JSON table to csv file
                    function jsonToCSV(records, fileName) {
                        const fs = require('fs');
                        const CRLF = '\r\n';
                        const DELIM = ';';
                        const TXTQUAL = '"';
                        let csv = Object.keys(records[0]).slice().join(DELIM) + CRLF;
                    
                        for (let record of records) {
                            for (let rec of Object.keys(record)) {
                                if (typeof record[rec] == 'number') {
                                    if (exportForExcel && rec === 'ts') {
                                        const ts = record[rec];
                                        const dst = isDST(ts);
                                        if (dst) {
                                            record[rec] = ts / 864e5 + 25569 + 2 / 24;
                                        } else {
                                            record[rec] = ts / 864e5 + 25569 + 1 / 24;
                                        }
                                    }
                                    csv += record[rec].toString().replace('.', ',') + DELIM;
                                } else {
                                    csv += TXTQUAL + record[rec] + TXTQUAL + DELIM;
                                }
                            }
                            csv += CRLF;
                        }
                        fs.writeFile(fileName, csv, err => {
                            if (err) console.log(err);
                        })
                    }
                    
                    //berechnet ob Sommer- oder Winterzeit(letzter Sonntag im März und letzter Sonntag im Novemver!!!)
                    function isDST(ts) {
                        const dat = new Date(ts);
                        const y = dat.getFullYear();
                        const ls1 = new Date(y, 3, 1);
                        const ls2 = new Date(y, 11, 1);
                        ls1.getDay() > 0 ? ls1.setDate(ls1.getDate() - 7 + (7 - ls1.getDay())) : ls1.setDate(ls1.getDate() - 7);
                        ls2.getDay() > 0 ? ls2.setDate(ls2.getDate() - 7 + (7 - ls2.getDay())) : ls2.setDate(ls2.getDate() - 7);
                        ls1.setHours(3, 0, 0, 0);
                        ls2.setHours(3, 0, 0, 0);
                        return dat >= ls1 && dat <= ls2;
                    }
                    
                    AllElectrifiedA Offline
                    AllElectrifiedA Offline
                    AllElectrified
                    schrieb am zuletzt editiert von AllElectrified
                    #9

                    @fastfoot
                    Der Script wirft bei mir leider eine Warnung:

                    16:09:47.731 warn javascript.0 (303078) TypeError: Cannot read property '0' of undefined at jsonToCSV (script.js.diverse_Exports.Export_Gaszaehler:22:34) at Object.cb (script.js.diverse_Exports.Export_Gaszaehler:12:5) at change (/opt/iobroker/node_modules/iobroker.js-controller/lib/adapter.js:5620:71) at Immediate._onImmediate (/opt/iobroker/node_modules/@iobroker/db-states-redis/lib/states/statesInRedisClient.js:232:37) at processImmediate (internal/timers.js:464:21)

                    Hab ich das was übersehen? Oder geht er trotzdem und ich muss nur sehr sehr lange warten bis das Ergebnisfile kommt (es wurde kein File im Zielordner angelegt)

                    Gruß
                    Thomas.

                    IOBROKER auf MINISFORUM TH50 unter UBUNTU 22.04LTS, etwa 50 Instanzen u.a. Homematic, Broadlink, Shelly, MQTT (openWB), Modbus (Victron), Sonoff, FHEM, Tronity, Homepilot, Hue, RCT, Tibber, Midea, Alexa, Worx, Weatherflow, SourceAnalytix, VIS, eCharts, Flot uvm,..

                    1 Antwort Letzte Antwort
                    0
                    Antworten
                    • In einem neuen Thema antworten
                    Anmelden zum Antworten
                    • Älteste zuerst
                    • Neuste zuerst
                    • Meiste Stimmen


                    Support us

                    ioBroker
                    Community Adapters
                    Donate

                    565

                    Online

                    32.5k

                    Benutzer

                    81.7k

                    Themen

                    1.3m

                    Beiträge
                    Community
                    Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                    ioBroker Community 2014-2025
                    logo
                    • Anmelden

                    • Du hast noch kein Konto? Registrieren

                    • Anmelden oder registrieren, um zu suchen
                    • Erster Beitrag
                      Letzter Beitrag
                    0
                    • Home
                    • Aktuell
                    • Tags
                    • Ungelesen 0
                    • Kategorien
                    • Unreplied
                    • Beliebt
                    • GitHub
                    • Docu
                    • Hilfe