wake-up-neo.net

Kopieren Sie die Tabellenstruktur in eine neue Tabelle in sqlite3

Gibt es eine einfache Möglichkeit, eine vorhandene Tabellenstruktur in eine neue zu kopieren? (braucht die Daten nicht, nur die Struktur -> wie ID INTEGER, Name varchar (20) ...)

Vielen Dank

36
leon22

Sie könnten einen Befehl wie diesen verwenden:

CREATE TABLE copied AS SELECT * FROM mytable WHERE 0

aufgrund der dynamischen Typisierung von SQLite gehen jedoch die meisten Typinformationen verloren.

Wenn Sie nur eine Tabelle benötigen, die sich wie das Original verhält, d. H. Dieselbe Anzahl und Namen von Spalten hat und dieselben Werte speichern kann, reicht dies aus.

Wenn Sie die Typinformationen wirklich genau wie das Original benötigen, können Sie die ursprüngliche CREATE TABLE-Anweisung aus der sqlite_master-Tabelle wie folgt lesen:

SELECT sql FROM sqlite_master WHERE type='table' AND name='mytable'
72
CL.

SQLite kann keine Tabelle mit PK, Standardwerten und Indizes klonen.

Hacking durch ein anderes Werkzeug ist notwendig.

Ersetzen Sie in Shell den Tabellennamen durch sed.

sqlite3 dbfile '.schema oldtable' | sed '1s/oldtable/newtable/' | sqlite3 dbfile

Und Sie können neue Tabelle überprüfen.

sqlite3 dbfile '.schema newtable'

Primärschlüssel, Standardwerte und Indizes werden reserviert.

Ich hoffe, dieser Befehl kann Ihnen helfen.

11
Raymond Wu

sqlite> .schema

CREATE TABLE [About](
  [id],
  [name],
  [value]);

Der Befehl .schema gibt Ihnen die Struktur von About-table, wie Sie den SQLite-Interpreter von Hand programmieren und Befehle eingeben können.

Fügen Sie den CREATE-Block ein und führen Sie ihn aus. Geben Sie der Tabelle einen neuen Namen:

sqlite> CREATE TABLE [AboutToo](
  [id],
  [name],
  [value]);

Der Befehl .tables zeigt jetzt an, dass Sie zwei Tabellen haben, alte und neue, "kopiert".

sqlite> .tables
About     AboutToo

p.s. sqlite> ist Befehl Sie werden nach dem Starten des SQLite.exe-Interpreters in der Konsole angezeigt. Um es zu bekommen, gehen Sie zu www.sqlite.org

0
startup.maker