Рубрика: PostgreSQL

  • Php. PDO. Как получить id вставленной записи?

    Необходимость получения id только что вставленной записи — постоянная задача. Сейчас покажу, как работая с PDO b php получить это значение после INSERT-a. Все, как мы знаем очень просто: Рассмотрим пример: $query = $db->prepare(«INSERT INTO ……»); $query->execute(); $id = $db->lastInsertId(); Здесь все типично — подготавливаем запрос, выполняем его и средствами PDO получаем послений вставленный ID. […]

  • PDO. Как вернуть данные в формате ключ-значение (key-value)?

    Работа с данными в формате ключ-значение — другими словами с ассоциативными массивами очень удобна. Сейчас приведу просто пример как заставить PDO вернуть записи БД сразу в формате ключ-значение. Это полезно, когда Вам нужно получить, например id и название записи. При этом формат по умолчанию, мягко говоря не удобен при необходимости обращения по id. Сравните два […]

  • PostgreSQL. Как удалить записи только с родительской таблицы?

    PostgreSQL позволяет реализовать механизм партиционирования на очень нативном уровне — но при этом запрос к родительской таблице имеет отношение и ко всем дочерним таблицам. Таким образом стает проблематично удалить или получить данные только из родительской таблицы. В этой статье я расскажу. Как очень просто решить поставленную проблему. Для начала напомню, что партиционирование позволяет разбивать огромный […]

  • Postgres. Получить список таблиц базы данных и ее поля?

    Типичной задачей в области работы с базами данных, в т.ч. Postgres, является получения списка таблиц базы данных, а также их колонок. Для этого нужно обратиться к служебным таблицам и выполнить следующие запросы: — Все таблицы в схеме public SELECT table_name FROM information_schema.tables WHERE table_schema=’public’ ORDER BY table_name; — Все таблицы и колонки в схеме public […]

  • Postgres. Как установить dblink (contrib)?

    Для выполнения запросов между различными БД в postgres необходимо установить библиотеку dblink (contrib). Для этого необходимо выполнить несколько простых шагов: 1) Устанавливаем расширение sudo apt-get install postgresql-contrib 2) Далее в Navicat, pgAdmin или другом Вашем интерфейсе: CREATE EXTENSION dblink;

  • PostGIS. Решаем ошибку «Cannot find SRID (4283) in spatial_ref_sys»

    Сегодня в ходе борьбы с проекциями PostGis и MapServer столкнулся с неожиданной ошибкой — «Cannot find SRID (4283) in spatial_ref_sys». В этой статье я расскажу, как решить данную проблему. В ходе продолжительных поисков решения выяснилось, что по тем или иным причинам была очищена (полностью или частично) таблица spatial_ref_sys, находящаяся в нашей БД. Поэтому наша задача […]

  • PostgreSQL. Как открыть удаленный доступ?

    Открыть доступ к PostgreSQL извне достаточно просто и в этой статье я приведу пример, как предоставить удаленный доступ к базе данных. Для начала в postgresql.conf ставим следующую конфигурацию: listen_addresses = ‘*’ Следующий шаг можно пропустить, если Вам не нужно создавать дополнительного суперпользователя. # переключаемся на юзера postgres su postgres # создаем нового пользователя createuser -P […]

  • PostgreSQL. Где находится файл pg_hba.conf?

    Очень короткая заметка о том, где находится файл конфигурации pg_hba.conf. В общем случае файл находится в папке etc/postgresql/НОМЕР_ВЕРСИИ. Например, для версии 9.1 путь будет следующим: /etc/postgresql/9.1/main/pg_hba.conf

  • Ubuntu. Установка и настройка PostgreSQL.

    Рассмотрим пример установки сервера PostgreSQL в Ubuntu и его первичной настройки для доступа по локальной сети. Итак , все предельно просто — следуйте инструкциям ниже. Устанавливаем сервер: sudo apt-get install postgresql Правим конфиги в /etc/postgresql/9.3/main/postgresql.conf Находим строку: #listen_addresses = ‘localhost’ Правим ее на: listen_addresses = ‘*’ Т.е. убираем комментарий и ставим * вместо localhost. Продолжаем […]

  • PostgreSQL. Как изменить тип с строкового на числовой?

    Редко, но случается необходимость сменить тип поля в Базе Данных со строкового на числовой. То ли ошибка при разработке, то ли сменившиеся требования — но задача возможна. В этой статье рассмотрим, как это сделать стандартными средствами. Все что нам надо — выполнить следующий запрос: ALTER TABLE my_table ALTER COLUMN my_column TYPE numeric(10, 2) USING (my_column::numeric); […]