Es gibt keinen einzigen Befehlsansatz. Natürlich könnten Sie mehrere Befehle für RENAME
eingeben von dir selbst, aber lass mich etwas verbessern :) Wie ich in dieser Antwort
sagte
In Ihrem Fall wäre es:
SELECT
'ALTER TABLE ' || tab_name || ' RENAME COLUMN '
|| quote_ident(column_name) || ' TO '
|| quote_ident( '_1' || column_name) || ';'
FROM (
SELECT
quote_ident(table_schema) || '.' || quote_ident(table_name) as tab_name,
column_name
FROM information_schema.columns
WHERE
table_schema = 'schema_name'
AND table_name = 'table_name'
AND column_name LIKE '\_%'
) sub;
Das gibt Ihnen eine Reihe von Zeichenfolgen, die SQL-Befehle sind, wie:
ALTER TABLE schema_name.table_name RENAME COLUMN "_settingA" TO "_1_settingA";
ALTER TABLE schema_name.table_name RENAME COLUMN "_settingB" TO "_1_settingB";
...
Es ist nicht erforderlich, table_schema
zu verwenden in WHERE
-Klausel, wenn Ihre Tabelle in public
ist Schema. Denken Sie auch an die Verwendung der Funktion quote_ident()
- Lesen Sie meine ursprüngliche Antwort für weitere Erklärungen.
Bearbeiten:
Ich habe meine Abfrage geändert, sodass sie jetzt für alle Spalten funktioniert, deren Name mit dem Unterstrich _
beginnt . Da der Unterstrich beim SQL-Musterabgleich ein Sonderzeichen ist, müssen wir ihn maskieren (mithilfe von \
), um es tatsächlich zu finden.