Benutzer-Werkzeuge

Webseiten-Werkzeuge


sqlite

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

sqlite [2016-04-12 22:50:01] – Externe Bearbeitung 127.0.0.1sqlite [2019-05-21 12:03:36] (aktuell) manfred
Zeile 1: Zeile 1:
 +====== SQLite ======
 +
 +
 +===== Einrichtung =====
 +
 +Test-Datenbank mit einer Test-Tabelle anlegen
 +
 +  #!/usr/bin/env bash
 +  sqlite3 test.db "create table test (id int primary key, name text)"
 +  sqlite3 test.db "insert into test values (1, \"Fritz\")"
 +  sqlite3 test.db "select * from test"
 +
 +hier ist wichtig, dass alles klein geschrieben wird und das am Ende der Zeile __kein__ Semikolon steht, wie es bei SQL üblicherweise sein soll:
 +  > echo ".databases" | sqlite3 test.db
 +  > echo ".tables" | sqlite3 test.db
 +
 +  * [[http://www.sqlite.org/lang.html]]
 +
 +
 +Abfragebeispiel über zwei Tabellen:
 +
 +  echo "
 +  SELECT
 +        Spalte1,
 +        strftime('%w',datum),
 +        Spalte3
 +  FROM
 +        ${TABELLE1},
 +        ${TABELLE2}
 +  WHERE
 +        netz1=netz2
 +        AND id1=id2
 +        AND DATUM
 +                BETWEEN date('now','start of month','-1 month','-0 day')
 +                AND date('now','start of month','+0 month','-1 day')
 +  GROUP BY 1, 2
 +  ORDER BY 1, 2 DESC, 1
 +  LIMIT 10
 +  ;
 +  " | ${DBPROG} ${DBDATEI} > ${DATEN}
 +
 +**Das Semikolon am Ende eines SQL-Aufrufes ist sehr wichtig!**
 +
 +
 +eine Pipe-separierte Datei mit höchstgeschwindigkeit einlesen
 +
 +  echo "
 +  .import ${DATEN} ${TABELLE1}
 +  .separator |
 +  PRAGMA synchronous = 0;
 +  " | ${DBPROG} ${DBDATEI}
 +
 +
 +===== Syntax =====
 +
 +  # echo "SELECT * FROM sqlite_master;" | sqlite /var/lib/csync2/rechnername.db
 +  table|file|file|4|CREATE TABLE file ( filename, checktxt,     UNIQUE ( filename ) ON CONFLICT REPLACE)
 +  index|(file autoindex 1)|file|3|
 +  table|dirty|dirty|6|CREATE TABLE dirty (      filename, force, myname, peername,      UNIQUE ( filename, peername ) ON CONFLICT IGNORE)
 +  index|(dirty autoindex 1)|dirty|5|
 +  table|hint|hint|8|CREATE TABLE hint ( filename, recursive,    UNIQUE ( filename, recursive ) ON CONFLICT IGNORE)
 +  index|(hint autoindex 1)|hint|7|
 +  table|action|action|10|CREATE TABLE action (  filename, command, logfile,     UNIQUE ( filename, command ) ON CONFLICT IGNORE)
 +  index|(action autoindex 1)|action|9|
 +  table|x509_cert|x509_cert|12|CREATE TABLE x509_cert ( peername, certdata,     UNIQUE ( peername ) ON CONFLICT IGNORE)
 +  index|(x509_cert autoindex 1)|x509_cert|11|
 +
 +alle Datenbanken anzeigen:
 +  # echo ".databases" | sqlite /var/lib/csync2/rechnername.db
 +  seq  name             file
 +  ---  ---------------  ----------------------------------------------------------
 +  0    main             /var/lib/csync2/rechnername.db
 +  1    temp             /var/tmp/sqlite_gQiSCgZmz70zacs
 +
 +alle Tabellen anzeigen:
 +  # echo ".tables" | sqlite /var/lib/csync2/rechnername.db
 +  action     dirty      file       hint       x509_cert
 +
 +Tabellen mit dem Zeichen "i" im Namen anzeigen:
 +  # echo ".tables i" | sqlite /var/lib/csync2/rechnername.db
 +  action  dirty   file    hint
 +
 +
 +=== Ausgabeformate ===
 +
 +spaltenweise:
 +  # echo -e ".mode column\nSELECT * FROM dirty;" | sqlite /var/lib/csync2/rechnername.db
 +  /etc/ha.d/resource.d/csync2  1           store01     store02   
 +  /etc/hosts                             store01     store02   
 +  /etc/vblade.conf                       store01     store02   
 +
 +Die normale Spaltenbreite sind 10 Zeichen, Inhalte die länger sind, werden abgeschnitten.
 +Man kann die Spaltenbreite aber auch verändern,
 +in diesem Beispiel wird die Breite der ersten Spalte auf "30" Zeichen und die der zweiten Spalte auf "3" Zeichen gesetzt.
 +Alle weiteren Spalten bleiben unverändert:
 +  # echo -e ".mode column\n.width 30 3\nSELECT * FROM dirty;" | sqlite /var/lib/csync2/
 +  /etc/ha.d/resource.d/csync2        store01     store02   
 +  /etc/hosts                      1    store01     store02   
 +  /etc/vblade.conf                0    store01     store02   
 +
 +als Liste:
 +  # echo -e ".mode list\nSELECT * FROM dirty;" | sqlite /var/lib/csync2/rechnername.db
 +  /etc/ha.d/resource.d/csync2|1|store01|store02
 +  /etc/hosts|1|store01|store02
 +  /etc/vblade.conf|0|store01|store02
 +
 +zeilenweise
 +  # echo -e ".mode line\nSELECT * FROM dirty;" | sqlite /var/lib/csync2/rechnername.db
 +  filename = /etc/ha.d/resource.d/csync2
 +     force = 1
 +    myname = store01
 +  peername = store02
 +  
 +  filename = /etc/hosts
 +     force = 1
 +    myname = store01
 +  peername = store02
 +  
 +  filename = /etc/vblade.conf
 +     force = 0
 +    myname = store01
 +  peername = store02
 +
 +spezielles Trennzeichen:
 +  # echo -e ".separator ', '\nSELECT * FROM dirty;" | sqlite /var/lib/csync2/rechnername.db
 +  /etc/ha.d/resource.d/csync2, 1, store01, store02
 +  /etc/hosts, 1, store01, store02
 +  /etc/vblade.conf, 0, store01, store02
 +