Import / Export

Generelles

Ausgehen von Listenansichten in SketShDb können Daten exportiert bzw. importiert werden. Der Export bzw. Import bezieht sich allerdings nicht nur auf die in der Listenansicht dargestellten Felder, sondern jeweils das gesamte Dokument. Beim Export wird allerdings der in der Listenansicht definierte Filter angewendet. Die Export/Importansicht wird durch das Antippen der Export-Schaltfläche am oberen Rand der Listenansicht und falls auch das Drucken erlaubt ist durch die anschließende Auswahl "Import/Export" aufgerufen.

Export

Bei der Auswahl "CSV" wird generell eine neue CSV-Datei mit allen Datensätzen der Listenabfrage erzeugt. Diese wird dann angezeigt und kann dann in iCloud oder je nach installierten Apps in einer anderen App gespeichert werden.

Wenn als Exportmethode "Google Tabellen" ausgewählt wird, kann nach erfolgtem Google-Login in ein bestehendes Dokument exportiert werden. Es erscheinen neben der Auswahl des Dokuments und des Reiters im ausgewählten Dokument deshalb weitere Optionen (die Zuordnung der Datensätze erfolgt jeweils anhand der Spalte "_id"):
Neue Datensätze zu Ziel hinzufügen: Datensätze, die im Zieldokument noch nicht enthalten waren, werden zum Zieldokument hinzugefügt.
Existierende Einträge am Ziel aktualisieren: Auch Datensätze, die im Zieldokument bereits vorhanden waren werden mit den Daten aus der App überschrieben.
Gelöschte Einträge am Ziel entfernen: Datensätze, die im Zieldokument einen Wert in der Spalte "_id" haben, der in der App nicht (mehr) bekannt ist, werden aus dem Zieldokument entfernt.

Wenn der Export in ein neues Dokument oder einen neuen Reiter erfolgt, haben die letzten beiden Optionen natürlich keine Bedeutung.

Beim Export in ein "Google Tabellen"-Dokument, werden zusätzlich noch zwei Systemspalten hinzugefügt: "_revision" und "_deleted". Diese beiden Spalten werden benötigt, falls die exportierte Tabelle später mit dem Sync-Modus (s.u.) aktualisiert werden soll.

Import

Beim CSV-Import kann die Datei zum Import über die Dateiauswahl aus im Betriebssystem zur Verfügung stehenden Quellen geladen werden. Bei der Auswahl von "Google Tabellen" kann wiederum eine existierende Datei aus dem verwendeten Google-Konto ausgewählt werden. Anschließend kann dann ein Reiter aus dem Dokument selektiert werden. Die Spaltenüberschriften im Quelldokument müssen mit den technischen Feldnamen in der App übereinstimmen. Unbekannte Spalten werden ignoriert. Beim Import stehen unabhängig von der Methode die drei Optionen wie beim Export zur Verfügung, nur dass sich die Bedeutung des Wortes "Ziel" geändert hat: Beim Import ist das Projekt in der App das Ziel und die CSV-Datei/das Google Tabellen-Dokument die Quelle. Die Funktionsweise ist aber die gleiche. Wenn keine Spalte mit dem Namen "_id" vorhanden ist, werden alle Einträge als "neue" Einträge interpretiert.

Synchronisation

Der Modus "Sync" fasst Export und Import zusammen um den Abgleich mit "Google Tabellen"-Dokumenten zu beschleunigen bzw. erleichtern. Datenbank und "Google Tabellen"-Dokument werden mit folgender Logik anhand der Felder "_id", "_revision" und "_deleted" abgeglichen:

  1. Datensatz existiert nur in App -> Datensatz wird in "Google Tabellen" hinzugefügt.
  2. Datensatz existiert nur in "Google Tabellen" (_id ist leer) -> Datensatz wird in App hinzugefügt.
  3. Datensatz existiert nur in "Google Tabellen" (_id ist gefüllt) -> Datensatz wurde offensichtlich in App gelöscht und wird deshalb auch in "Google Tabellen" gelöscht.
  4. Datensatz wurde in "Google Tabellen" als gelöscht markiert (_deleted enthält einen der Werte "1","x","y","yes","true") -> Datensatz wird sowohl aus "Google Tabellen" als auch aus App gelöscht.
  5. Datensatz wurde in App geändert (_revision hat sich geändert) -> Datensatz in "Google Tabellen" wird mit Werten aus App überschrieben.
  6. Datensatz wurde in "Google Tabellen" geändert (Werte unterschiedlich aber _revision stimmt überein) -> Datensatz wird in App aktualisiert.

Auf diese Weise wird eine einfache beiderseitige Synchronisierung mit einem "Google Tabellen"-Dokument erreicht. Die Möglichkeiten dieser Synchronisation sind allerdings beschränkt, es können z.B. nicht mehrere Geräte mit einem "Google Tabellen"-Dokument synchron gehalten werden, weil eine veraltete Version (_revision) eines Datensatzes in einer der Apps als Änderung des Dokuments in der App interpretiert würde. Es müsste eine vollständige Revisionsliste jedes Dokuments in der Tabelle vorgehalten werden um solche Fälle eindeutig zu erkennen. Für diesen Anwendungsfall ist die Replikation mit einem Datenbankserver deutlich besser geeignet!