PostgreSQL Query для изменения столбцов в верхний регистр - PullRequest
0 голосов
/ 18 ноября 2018

Я работаю над миграцией базы данных mySQL на PostgreSQL с использованием pgloader. Одна из проблем, с которой я сталкиваюсь, заключается в том, что мое приложение ищет все таблицы, начинающиеся с "ao_", чтобы быть "AO_", которые мне удалось решить, сделав их все в верхнем регистре, однако соответствующие столбцы также должны быть в верхнем регистре.

Есть ли хороший способ сделать так, чтобы столбцы таблицы "AO_" были только заглавными. Это не очень эффективно, просто сделать это для 400 таблиц с примерно 10 столбцами на таблицу:

ALTER TABLE "AO_54307E_QUEUE" RENAME project_id TO "PROJECT_ID";

Может быть, есть какой-то подстановочный знак, который мы могли бы использовать, чтобы просто захватить таблицы "AO_" и затем все столбцы были заглавными?

1 Ответ

0 голосов
/ 18 ноября 2018

Я бы рекомендовал вам не делать этого, и я цитирую документацию .

Цитирование идентификатора также делает его чувствительным к регистру,тогда как имена без кавычек всегда складываются в нижний регистр.Если вы хотите писать переносимые приложения, советуем всегда заключать в кавычки определенное имя или никогда его не заключать в кавычки.

Итак, кавычка " ПРОСТО, ТОЛЬКО столбцы таблицы" AO_ "будут в верхнем регистре "похоже на плохую идею.

Если вы все еще хотите продолжить, вы можете использовать цикл по information_schema.columns и запускать динамические ALTER операторы.

DO $$
DECLARE
rec RECORD;

 BEGIN

for rec IN (  SELECT column_name,table_name,table_schema 
               FROM  information_schema.columns 
               WHERE   table_name  like 'AO_%'     
               AND     column_name like 'ao_%'  )
  LOOP

   EXECUTE format ( 'ALTER TABLE  %I.%I RENAME %I TO %I' ,            
                     rec.table_schema,rec.table_name,rec.column_name,
                     upper(rec.column_name)) ;
   RAISE NOTICE 'COLUMN %  in Table %.% RENAMED', 

rec.column_name,rec.table_schema,rec.table_name;


  END LOOP;
END$$;

Демо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...