grundlegende manipulation von sqlite-tischen

380
marlon

Ich habe zwei Tabellen in meiner .sqlite. Diese beiden Tabellen sind hinsichtlich Struktur / Inhalt nahezu identisch, und ich möchte, dass eine Spalte der ersten Tabelle durch eine Spalte der zweiten Tabelle ersetzt wird.

Das ist was ich habe:

Tische

Ich will:

  • in Dokumenten addedmuss oldadded(für eine Sicherung) werden
  • ersetzen dann die gesamte Spalte addedvon Documentsdurch die ganze Kolonne addedvon doc3sept.

Bisher ist es mir gelungen, die addedvon doc3septmit auszuwählen SELECT added FROM doc3sept, aber ich bin fest damit beschäftigt, die alten Werte von addedvon zu ersetzen Documents.

0

1 Antwort auf die Frage

0
Vojtěch Dohnal

Das Umbenennen von Spalten in SQLite wird nicht unterstützt - siehe hier.

Erste oldaddedSpalte hinzufügen :

ALTER TABLE Documents ADD COLUMN oldadded int 

Zum Aktualisieren von Spaltenwerten aus einer anderen Tabelle können Sie nicht UPDATEin SQLite verwendet werden. Sie können nur den INSERT OR REPLACEBefehl verwenden.

Also nächster Lauf:

REPLACE INTO Documents (id, oldadded) SELECT id, added FROM Documents ON CONFLICT REPLACE 

Dann renne:

REPLACE INTO Documents (id, added) SELECT id, added FROM doc3sept  WHERE EXISTS (SELECT * FROM Documents WHERE doc3sept.id=Documents.id) ON CONFLICT REPLACE 

Seien Sie vorsichtig, wenn Sie ein Backup haben, wenn etwas fehlschlägt.