2016-07-12 15 views
1

Wie implementiere ich inkrementelle Staubsaugen einer SQLite-Datenbank mit FMDatabase?FMDatabase inkrementelles Vakuum

Das Äquivalent in reinem SQLite wäre, die Anweisung "PRAGMA incremental_vacuum", sqlite_step in einer Schleife für einige Batch-Größe vorzubereiten und die Aussage zu finalisieren. Wiederholen Sie den Vorgang, bis alle Seiten gesaugt sind.

Wie funktioniert das mit FMDatabase?

+0

FMDB ist nur ein dünner Wrapper für die SQLite-API, also können Sie wahrscheinlich 'executeUpdate' mit dieser' PRAGMA'-Anweisung ausführen. – Rob

Antwort

2

Die Lösung war ich fand diese Aussage in einer Schleife ausgeführt, bis batchAmount 0:

Methoden, die nicht funktioniert haben:

  • Mit "PRAGMA incremental_vacuum(:BatchAmount)" mit einem Parameter Wörterbucheintrag für " BatchAmount "verursachte einen SQLite-Syntaxfehler.
  • Der Aufruf executeUpdate: verursachte einen FMDatabase-Fehler, weil "PRAGMA" bedeutet, dass es sich um eine Abfrage handelt.
  • Aufruf executeQuery: hatte keinen Einfluss auf die Dateigröße.