« Management SQLite

Daten importieren

../../_images/lucas-cranach-adam-eva.jpg

Der Import von Daten erfolgt durch:

Import über ein SQL-Script

-- Relation löschen, was beim ersten Aufruf einen
-- Fehler erzeugt.

DROP TABLE sprichworte;

-- Neuanlage der Relation
CREATE TABLE sprichworte (
  id INTEGER PRIMARY KEY AUTOINCREMENT,
  spruch TEXT
);

insert into sprichworte values(NULL, 'Alle Wege führen nach Rom.');
insert into sprichworte values(NULL, 'Aller guten Dinge sind drei.');
insert into sprichworte values(NULL, 'Allzu klug ist dumm.');
insert into sprichworte values(NULL, 'Alte Liebe rostet nicht.');
insert into sprichworte values(NULL, 'Alter schützt vor Torheit nicht.');
insert into sprichworte values(NULL, 'Am Abend gekammert, am Morgen gejammert.');

Das Ausführen aller Anweisungen erfolgt über den folgenden Aufruf:

.read /pfad/zum/sql-script.sql
Windows

Hier sind die Pfade mit einem \ (Backslash) getrennt, diese müssen wie unter Unix üblich durch einen / (Schrägstrich) ersetzt werden!

Import aus einer CSV-Datei

Folgende Bedingungen sind zu beachten:

  • alle Attribute müssen in der CSV einen Wert zugeordnet bekommen

  • leere Einträge werden durch zwei aufeinander folgende Komma dargestellt

  • ein automatisches Füllen mit einem autoincrement-Attribut ist nicht möglich, aber es gibt einen Umweg (siehe Import ohne ID) …

  • umschalten auf cvs-mode

.mode csv
.import /pfad/zur/csv-datei.csv sprichworte

1. Die Tabelle anlegen:

CREATE TABLE sprichworte (
  id INTEGER PRIMARY KEY AUTOINCREMENT,
  spruch TEXT
);
  1. Jede Spalte muss einen passenden Wert aufweisen:

1,"Alle Wege führen nach Rom."
2,
3,"Allzu klug ist dumm."
4,"Alte Liebe rostet nicht."
5,"Alter schützt vor Torheit nicht."

Import ohne ID

1. Tabelle ohne ID anlegen

CREATE TABLE TempTable (
  spruch TEXT
);
  1. Inhalt der CSV-Datei

"Alle Wege führen nach Rom."

"Allzu klug ist dumm."
"Alte Liebe rostet nicht."
"Alter schützt vor Torheit nicht."

3. Import

.import /pfad/zur/csv-datei.csv TempTable
Windows

Hier sind die Pfade mit einem \ (Backslash) getrennt, diese müssen wie unter Unix üblich durch einen / (Schrägstrich) ersetzt werden.

4. Tranfer von TempTable zur Zieltabelle (sprichworte)

INSERT INTO sprichworte (spruch) SELECT * FROM TempTable;
DROP TABLE TempTable;

Duplikate entfernen

Struktur der ersten Tabelle:

CREATE TABLE words (
  'word_id' INTEGER PRIMARY KEY AUTOINCREMENT,
  'listener_id' INT NULL,
  'word' VARCHAR(45) NULL
);

Anzahl Datensätze:

select count(*) from words;
44299
  1. Zweite Tabelle mit der Struktur der ersten Tabelle anlegen

  2. Danach den Tranfer mit folgender Anweisung:

    drop table worte;
    CREATE TABLE worte (
      'word_id' INTEGER PRIMARY KEY AUTOINCREMENT,
      'listener_id' INT NULL,
      'word' VARCHAR(45) NULL
    );
    
    INSERT INTO worte (listener_id, word)
      SELECT DISTINCT listener_id, word FROM words;
    

Anzahl Datensätze:

select count(*) from worte;
13112