Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. Sqlite nach mysql umziehen

    NEWS

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Sqlite nach mysql umziehen

    This topic has been deleted. Only users with topic management privileges can see it.
    • sissiwup
      sissiwup last edited by

      Hallo,

      wer seine sqlite Daten nach mysql umziehen möchte, anbei eine Skizze, wie das geht:

      Daten aus sqlite exportieren:

      cd /opt/iobroker/iobroker-data/sqlite
      sqlite3
      .open sqlite.db
      .mode csv
      .output sources
      select * from sources;
      .output datapoints
      select * from datapoints;
      .output ts_bool
      select * from ts_bool;
      .output ts_numer
      select * from ts_number;
      .output ts_string
      select * from ts_string;
      .exit
      
      

      In der mysql-DB anmelden und Importtabellen erzeugen (ich nutze dafür toad)

      create TABLE iobroker.old_ts_bool like iobroker.ts_bool;
      create TABLE iobroker.old_ts_number like iobroker.ts_number;
      create TABLE iobroker.old_ts_string like iobroker.ts_string;
      create TABLE iobroker.old_datapoints like iobroker.datapoints;
      create TABLE iobroker.old_sources like iobroker.sources;
      
      

      Dann für jede Tabelle die Daten importieren (also 5x):

      LOAD DATA INFILE '/opt/iobroker/iobroker-data/sqlite/sources' 
      INTO TABLE iobroker.old_sources 
      FIELDS TERMINATED BY ',' 
      LINES TERMINATED BY '\n';
      

      Spalten hinzufügen:

      alter TABLE iobroker.old_datapoints ADD new_id int;
      alter TABLE iobroker.old_sources ADD new_id int;
      

      neue id´s raussuchen und in die neuen Spalten einfügen(der select ist nur zum Prüfen):

      select * from iobroker.old_datapoints o,iobroker.datapoints d where o.name=d.name;
      update iobroker.old_datapoints o SET new_id = (select id FROM iobroker.datapoints d WHERE d.name=o.name);
      select * from iobroker.old_sources o,iobroker.sources s where o.name like concat("%",s.name,"%") ;
      update iobroker.old_sources o SET new_id = (select id FROM iobroker.sources s WHERE o.name like concat("%",s.name,"%"));
      

      Jetzt noch die Daten übertragen (bitte _string,_bool und _number)(also 3x):

      select s.new_id as _from,ack,d.new_id as id,q,ts,val 
      from iobroker.old_ts_string o,iobroker.old_datapoints d,iobroker.old_sources s 
      WHERE o.id = d.id and d.new_id IS NOT NULL and o._from = s.id and s.new_id IS NOT NULL ;
      
      insert INTO  iobroker.ts_string (_from,ack,id,q,ts,val) (select s.new_id as _from,ack,d.new_id as id,q,ts,val 
      from iobroker.old_ts_string o,iobroker.old_datapoints d,iobroker.old_sources s 
      WHERE o.id = d.id and d.new_id IS NOT NULL and o._from = s.id and s.new_id IS NOT NULL );
      

      Anschließend noch die Import-Tabellen wieder leeren:

      delete FROM iobroker.old_datapoints ;
      delete FROM iobroker.old_sources  ;
      delete FROM iobroker.old_ts_bool  ;
      delete FROM iobroker.old_ts_number  ;
      delete FROM iobroker.old_ts_string  ;
      
      1 Reply Last reply Reply Quote 2
      • C
        CaneTLOTW last edited by CaneTLOTW

        @sissiwup said in Sqlite nach mysql umziehen:

        select s.new_id as _from,ack,d.new_id as id,q,ts,val

        Vielen Dank für die Zusammenfassung.
        Ich konnte damit erfolgreich eine sqlite Datenbank mit 16 Mio. Einträgen nach MatrinaDB übertragen.

        insert INTO  iobroker.ts_string (_from,ack,id,q,ts,val) (select s.new_id as _from,ack,d.new_id as id,q,ts,val 
        

        Musste ich nur um ignore ergänzen

        insert ignore INTO  iobroker.ts_string (_from,ack,id,q,ts,val) (select s.new_id as _from,ack,d.new_id as id,q,ts,val 
        

        Da es immer wieder zu Fehlern kam.

        Dadurch konnten zwar einige Datensätze nicht übertragen werden, bisher sind mir jedoch keien Lücken aufgefallen....

        1 Reply Last reply Reply Quote 0
        • First post
          Last post

        Support us

        ioBroker
        Community Adapters
        Donate
        FAQ Cloud / IOT
        HowTo: Node.js-Update
        HowTo: Backup/Restore
        Downloads
        BLOG

        918
        Online

        31.7k
        Users

        79.8k
        Topics

        1.3m
        Posts

        2
        2
        1357
        Loading More Posts
        • Oldest to Newest
        • Newest to Oldest
        • Most Votes
        Reply
        • Reply as topic
        Log in to reply
        Community
        Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
        The ioBroker Community 2014-2023
        logo