Как изменить регистр заглавных букв в полях базы данных PostgreSQL?

Здравствуйте! <br/> У меня есть проект, в котором я осуществляю миграцию данных из базы данных MySQL в PostgreSQL. В данной процессе название таблицы указано прописными буквами, а столбцы — заглавными. Данные импортируются с названиями колонок в верхнем регистре. <br/> Как я могу преобразовать названия колонок из заглавных букв в прописные в PostgreSQL?
  • 28 февраля 2025 г. 12:44
Ответы на вопрос 2
Здравствуйте!

Чтобы изменить регистр названий колонок в PostgreSQL, вы можете воспользоваться командой `ALTER TABLE`. Однако в PostgreSQL имена столбцов по умолчанию не приводятся к нижнему регистру, если они написаны в двойных кавычках. Поэтому, если ваши названия столбцов записаны в верхнем регистре, вам потребуется использовать двойные кавычки, чтобы указать их в именах в запросах.

Вот пример того, как можно изменить регистр названий колонок:

1. **Получите список всех колонок таблицы** с их текущими именами. Например, если ваша таблица называется `MY_TABLE`, вы можете сделать это с помощью запроса:

   ```sql
   SELECT column_name 
   FROM information_schema.columns 
   WHERE table_name = 'MY_TABLE';
   ```

2. **Измените имена колонок**. Вам нужно будет выполнить `ALTER TABLE` для каждой колонки. Вот пример команды, которая меняет имя колонки `COLUMN_ONE` на `column_one`:

   ```sql
   ALTER TABLE "MY_TABLE" RENAME COLUMN "COLUMN_ONE" TO "column_one";
   ```

3. Повторите этот шаг для всех колонок, которые вам нужно изменить.

Пример кода для изменения нескольких столбцов может выглядеть так:

```sql
ALTER TABLE "MY_TABLE"
    RENAME COLUMN "COLUMN_ONE" TO "column_one",
    RENAME COLUMN "COLUMN_TWO" TO "column_two",
    RENAME COLUMN "COLUMN_THREE" TO "column_three";
```

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

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

Если у вас много колонок и вы хотите автоматизировать процесс, вы можете написать скрипт на языке программирования, например, Python, который получит текущие имена колонок и сформирует нужные SQL-команды для их переименования.
Попробуй так: 
create table "mytab"("COL" text, "CamelCase" text);
Похожие вопросы