Es scheint, dass es für reordering columns
in einem sqlite3 table
nicht einfach ist. Zumindest die sqlite manager
in firefox
unterstützt diese Funktion nicht. Verschieben Sie beispielsweise column2 in column3 und verschieben Sie column5 in column2. Gibt es eine Möglichkeit, Spalten in der SQLite-Tabelle neu anzuordnen, entweder mit einer SQLite-Verwaltungssoftware oder einem Skript? Vielen Dank.Sqlite3: Wie man Spalten in einer Tabelle neu anordnet?
Antwort
Dies ist keine einfache Aufgabe in einem DBMS. Sie müssten fast sicher eine neue Tabelle mit der gewünschten Reihenfolge erstellen und Ihre Daten von einer Tabelle in die Reihenfolge verschieben. Es gibt keine alter table-Anweisung, um die Spalten neu anzuordnen. Daher werden Sie entweder in sqlite manager oder an einem anderen Ort keine Möglichkeit finden, dies in der gleichen Tabelle zu tun.
Wenn Sie wirklich die Reihenfolge ändern möchten, können Sie tun:
Sie haben tableA Unter der Annahme:
create table tableA(
col1 int,
col3 int,
col2 int);
Sie eine tableB schaffen könnten mit den Spalten, wie Sie wollen nach:
create table tableB(
col1 int,
col2 int,
col3 int);
dann die Daten zu tableB von tableA bewegen:
insert into tableB
SELECT col1,col2,col3
FROM tableA;
Dann die ursprüngliche tableA entfernen und tableB zu TableA umbenennen:
DROP table tableA;
ALTER TABLE tableB RENAME TO tableA;
Sie können jederzeit bestellen Sie die Spalten aber Sie in Ihrer SELECT-Anweisung wollen, wie folgt aus:
SELECT column1,column5,column2,column3,column4
FROM mytable
WHERE ...
Sie sollten nicht sie selbst in der Tabelle „Ordnung“ benötigen.
Muss Schema von 2 Tabellen übereinstimmen, damit die Daten von einem zu einem anderen kopiert werden können. Sqlite3-Import stimmt beim Kopieren nicht mit der Spalte überein. Also enden wir zum Beispiel mit der Integer-Spalte unter der Textspalte. – user938363
Die Reihenfolge, in sqlite3 Sache tut. Konzeptionell sollte es nicht, aber versuchen, dieses Experiment zu beweisen, dass es funktioniert:
CREATE TABLE SomeItems (identifier INTEGER PRIMARY KEY NOT NULL, filename TEXT NOT NULL, path TEXT NOT NULL, filesize INTEGER NOT NULL, thumbnail BLOB, pickedStatus INTEGER NOT NULL, deepScanStatus INTEGER NOT NULL, basicScanStatus INTEGER NOT NULL, frameQuanta INTEGER, tcFlag INTEGER, frameStart INTEGER, creationTime INTEGER);
die Tabelle Bestücken mit etwa 20.000 Datensätze, bei denen eine kleine Thumbnail JPEG ist. Dann machen Sie ein paar Abfragen wie folgt:
time sqlite3 Catalog.db 'select count(*) from SomeItems where filesize = 2;'
time sqlite3 Catalog.db 'select count(*) from SomeItems where basicscanstatus = 2;'
Es spielt keine Rolle, wie viele Datensätze zurückgegeben werden, auf meinem Rechner, die erste Abfrage dauert etwa 0m0.008s und die zweite Abfrage dauert 0m0.942s. Massiver Unterschied, und der Grund ist wegen des Blobs; Dateigröße ist bevor der Blob und basicscanstatus danach ist.
Wir haben jetzt den Blob in seine eigene Tabelle verschoben, und unsere App ist glücklich.
Das ist sehr interessant, obwohl es die Frage überhaupt nicht beantwortet. – sapht
Wahr. Filipe Silvas Antwort beantwortet die Frage.Meine Antwort war mehr darüber, warum dies getan werden muss, d. H. Validiert die Frage. Wir mussten es tun, und es gab keine einfache Möglichkeit, die Reihenfolge zu ändern, also erstellten wir eine zweite Tabelle und setzten die langsame Spalte in diese Tabelle. Dies machte einen großen Unterschied in der Leistung für uns. – user8353681
- 1. Wie man die Ergebnismenge neu anordnet
- 2. Wie man KendoGrid Tab Order neu anordnet?
- 3. Wie man die Elemente in einer Legende neu anordnet?
- 4. Wie man HTTP-Header neu anordnet?
- 5. winform: Wie man das Menü neu anordnet?
- 6. Wie man ein Array neu anordnet?
- 7. Wie man die Aktivität neu anordnet
- 8. Wie man TMUX Sitzungen neu anordnet?
- 9. sqlite3: Erstellen einer Tabelle ohne Spalten
- 10. Wie man einen Python-Pandas-Datenrahmen neu anordnet?
- 11. Wie man eine 60mb CSV-Datei neu anordnet
- 12. Wie man die Balken von ggplot2 bargraph neu anordnet?
- 13. Wie man Webkomponenten anordnet
- 14. Verhindern, dass Sympy die Gleichung neu anordnet
- 15. Wie man Objekte in einer geraden Linie in three.js anordnet
- 16. Wie fügt man Spalten zu sqlite3 python hinzu?
- 17. Wiederhole Spalten in einer Tabelle
- 18. Wie man mehrere Panels in JFrame anordnet
- 19. Wie man nur spezifische Spalten einer Tabelle in Django holt?
- 20. Wie speichert man Array in einer Spalte in Sqlite3?
- 21. SQLite3-Spalten sind nicht eindeutig
- 22. Wie man Karten auf Android anordnet?
- 23. Wie man Yii2 Form Felder nebeneinander anordnet
- 24. Wie man eine schlampige Heatmap anordnet r
- 25. Wie man Code mit überschriebenen Methoden oben in Android Studio neu anordnet?
- 26. Wie kann ich eine gespeicherte Prozedur schreiben, die nummerierte Daten nach einer Statusspalte neu anordnet?
- 27. Wie macht man Einträge einer Tabelle als Spalten im Abfrageergebnis?
- 28. Wie man zwei divs nebeneinander anordnet?
- 29. Wie man PHP für den Schleifenwert anordnet?
- 30. sqlite3 python Spalten hinzufügen und Werte aktualisieren
Für den Befehl der Einfügung in TabelleB oben behält es die ID? Wir brauchen den Datensatz in der neuen Tabelle mit der gleichen ID wie in Tabelle A. – user938363
Sicher. Wenn eine dieser Spalten die ID ist, wird sie in die neue Tabelle migriert. –
@FilipeSilva Was ist, wenn die ID-Spalte auf AUTOINCREMENT gesetzt ist? – pavitran