Архив метки: PostgreSQL

Вопросы по переходу c MSSQL на PostgreSQL (черновик)

Сам PostgreSQL
	Развёртывание
		Определиться, один будет сервер или кластер
		Если несколько, то у серверов наверно будут разные роли (обычно вроде несколько серверов на чтение данных, один на вставку и изменение)
		Установка ПО на все сервера одним скриптом
		Определиться с местом хранения:
			конфигурации
			баз данных
			резервных копий
			скриптов для обслуживания и т.д.
	Обслуживание
		Определиться с мониторингом состояния серверов и настроить его
		Составить план обслуживания серверов
			Периодичность и типы резервного копирования
			Прочие типовые операции обслуживания (обновление статистики, индексов и т.п.)
			Очистка от лишних данных в БД, логов и т.д.
		Расширение дискового пространства
		Добавление в кластер дополнительных серверов, замена серверов любой из ролей
		Трассировка и логирование запросов
		Определиться с управлением пользователями, созданием и удалением баз данных и схем, изменением таблиц, транзакций, процедур и т.п.
	Восстановление
		Приготовить скрипты для восстановления баз данных из бэкапов
		Восстановление серверов
		Все перечисленные варианты восстановления всего обязательно протестировать
Базы данных
	Перенос с MSSQL на PostgreSQL
		Инвентаризация данных в MSSQL
			какие данные какими приложениями используются
			из каких источников те же приложения будут брать данные после переезда
		Решить что делать с существующими ограничениями на таблицы (CONSTRAINTS)
		--//-- с существующими триггерами
		--//-- с с функциями, процедурами и прочими PROGRAMMABILITY
		Возможно согласовать правила переименования объектов БД (названия таблиц, колонок и т.п.)
		Алгоритм добавления и модификации данных в MSSQL и PostgreSQL на переходный период

Чтоб к серверу PostgreSQL можно было подключаться из сети (просто чтоб заработало)

    в postgresql.conf добавить listen_addresses = '*' 
    в pg_hba.conf добавить
    host    all             all             192.168.1.1/16          md5
    перезапустить службу
    service postgresql restart
    Если надо, внести изменения в настройки файрвола 

Python ODBC список доступных драйверов

>>> import pyodbc
>>> pyodbc.drivers()
['SQL Server', 'Microsoft Access Driver (*.mdb, *.accdb)', 'Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)', 'Microsoft Access Text Driver (*.txt, *.csv)', 'SQL Server Native Client 11.0', 'ODBC Driver 17 for SQL Server', 'SQL Server Native Client RDA 11.0', 'PostgreSQL ANSI(x64)', 'PostgreSQL Unicode(x64)', 'PostgreSQL ANSI', 'PostgreSQL Unicode']
>>>

Python pyodbc postgres

import pyodbc
conn_str = (
    "DRIVER={PostgreSQL Unicode};"
    "DATABASE=postgres;"
    "UID=postgres;"
    "PWD=whatever;"
    "SERVER=localhost;"
    "PORT=5432;"
    )
conn = pyodbc.connect(conn_str)
crsr = conn.execute("SELECT 123 AS n")
row = crsr.fetchone()
print(row)
crsr.close()
conn.close()

Просмотр списка баз и таблиц из командной строки в PostgreSQL

Для просмотра списков баз данных и таблиц в них команды следующие:

  • \list или \l: вывести список всех баз данных
  • \dt: вывести список всех таблиц в текущей базе

В других базах таблицы увидеть не удастся, пока не поменяем текущую.

Для смены базы данных:

\connect database_name

Здесь мануал по psql.