Задать вопрос
@QTusers

Изменение заглавных полей в постгрессе?

Здравствуйте!
У меня в проекте происходит миграция данный из БД Mysql в Postgres. Название таблицы прописано прописными буквами, а колонок заглавными. Данные импортируются с названием колонок заглавными буквами.
Как в Postgres преобразовать заглавные в прописные буквы????
Логи
Ошибка выполнения SQL: ОШИБКА: столбец "id" не существует
LINE 1: ... = 'None', "USER_ID" = 'None', "SORT" = '200' WHERE ID = '1'
^
Ошибка подключения к БД: ОШИБКА: столбец "id" не существует
LINE 1: ... = 'None', "USER_ID" = 'None', "SORT" = '200' WHERE ID = '1'
^
Ошибка обновления записи в таблице b_abtest_14: ОШИБКА: столбец "id" не существует
LINE 1: ... = 'None', "USER_ID" = 'None', "SORT" = '200' WHERE ID = '1'
^
ID: 1, Данные: {'ID': '1', 'SITE_ID': 'None', 'ACTIVE': 'N', 'ENABLED': 'T',
'NAME': 'Новый дизайн', 'DESCR': 'Запустите А/B-тестирование для сравнения
текущего дизайна с новым, и убедитесь, что показатели конверсии нового шаблона сайта выше.',
'TEST_DATA': 'a:2:{s:2:"id";s:7:"sample1";s:4:"list";a:1:{i:0;a:3:{s:4:"type";s:8:"template";
s:9:"old_value";s:0:"";s:9:"new_value";s:0:"";}}}', 'START_DATE': 'None', 'STOP_DATE': 'None',
'DURATION': '0', 'PORTION': '30', 'MIN_AMOUNT': 'None', 'USER_ID': 'None', 'SORT': '200'}

ef update_by_id(table, id, key='id', **kwargs):
    # тут необходимо указывать параметры в ковычка "". Тоже особенность postgres.
    try:
        update('{} SET {} WHERE {} = %s'.format(table, ', '.join('"{}" = %s'.format(k) for k in kwargs), key),
               *(tuple(kwargs.values()) + (id,)))
    except Exception as e:
        print(f"Ошибка обновления записи в таблице {table}: {e}")
        print(f"ID: {id}, Данные: {kwargs}")
        raise
  • Вопрос задан
  • 149 просмотров
Подписаться 1 Простой 7 комментариев
Пригласить эксперта
Ответы на вопрос 2
@Akina
Сетевой и системный админ, SQL-программист.
PostgreSQL: Identifiers and Key Words
MySQL: Identifier Case Sensitivity
Прочитать и изучить ОЧЕНЬ внимательно - от этих ссылок и всё вокруг. Особое внимание - различиям между квотированными и неквотированными идентификаторами.

Данные импортируются с названием колонок заглавными буквами.

Ну, значит, так импортируешь. По-любому, это твой косяк.
Ответ написан
Комментировать
mayton2019
@mayton2019
Bigdata Engineer
Попробуй так:
create table "mytab"("COL" text, "CamelCase" text);
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы