- Регистрация
- 09.10.2015
- Сообщения
- 3 916
- Благодарностей
- 3 867
- Баллы
- 113
Понадобилось взаимодействие с базой данных, размещенной в постгре, полопатил форум и практически ничего не нашел. А так как взаимодействия с ODBC у меня ранее не было - я совсем не понимал что нужно делать. Ибо к MySQL я подключился в первый раз "в легкую", а вот тут возникли проблемы.
Не претендую на всеобъемлющую объективность и познания в этом деле, сам только-только разобрался, но пока есть "запал" - решил написать тут, чтобы эта инфа оказалась полезна и другим. Возможно, есть и чуть более простые способы, тогда велкам в комментарии
У меня установлен PostgreSQL v10.1 на Windows Server 2012R2 (64bit) и на этом же сервере стоит ZennoPoster 5.12.1.0. Возможно, для подключения к удаленной БД - инструкции могут отличаться. Поэтому тут рассмотрен вариант только для коннекта к локальной базе данных.
Запросы будем отправлять с помощью стандартного кубика Данные -> Базы данных:
Первым делом - нужно проверить, вдруг драйвер ODBC для PostgreSQL уже установлен, тогда можно будет сразу перейти к предпоследнему шагу (Настройка ODBC). Для проверки тыкаем:
Переходим на сайт: https://odbc.postgresql.org/ (там вся инфа по ODBC, будет полезно тем, кто захочет копнуть глубже) и тыкаем "Downloads are available in source and binary formats at the PostgreSQL downloads site". Там выбираем каталог msi, выбираем версию драйвера, согласно установленной версии PostgreSQL (лучше вначале всегда пробовать последний драйвер, если не подойдет - тогда тестировать по мажорной версии своей СУБД), обязательно выбираем правильную разрядность системы.
Для меня это был файл: psqlodbc_10_00_0000-x64.zip
Распаковываем, устанавливаем, тут не должно возникнуть сложностей.
Единственное, что скорее всего для старых версий ZP (5.9 и ниже) - нужно будет ставить вместе и 32 битную и 64 битную версию, т.к. судя по этому посту - ранее ZP был 64-битный, а PM 32-битный. У меня на 5.12 - всё запустилось и в PM, и в ZP только с одним 64-битным драйвером, поэтому не пришлось делать извращения как в указанной выше теме.
Открываем меню пуск, вбиваем в поиск odbc и видим:
(если не видим - очень плохо, тут я даже не знаю что делать, всё это по-идее должно быть установлено, если нет - нужно ставить какие-то компоненты скорее всего)
Тут почему-то пуск показывает дубли одного и того же, то есть по факту "Источники данных" и "Настройка источников данных" - это одно и тоже. Запускается одна и та же программа
Запускаем ту версию, разрядности которой у вас операционка. Вот на всякий случай пути к запускаемым программам:
Самый последний шаг. Если вы дошли до этого раздела, то уже скорее всего прихерели сколько всего нужно сделать. Не пугайтесь, всё что было до этого - подготовительная работа. Для соединения с PgSQL в ProjectMaker вы будете делать только то, что написано в этом разделе. Поэтому я посчитал нужным чуть продублировать информацию с первого раздела о проверке драйвера.
Надеюсь, что мой (как оказалось) длинный мануал кому-то поможет. Пусть даже не сейчас, а через годик-два
Не претендую на всеобъемлющую объективность и познания в этом деле, сам только-только разобрался, но пока есть "запал" - решил написать тут, чтобы эта инфа оказалась полезна и другим. Возможно, есть и чуть более простые способы, тогда велкам в комментарии
У меня установлен PostgreSQL v10.1 на Windows Server 2012R2 (64bit) и на этом же сервере стоит ZennoPoster 5.12.1.0. Возможно, для подключения к удаленной БД - инструкции могут отличаться. Поэтому тут рассмотрен вариант только для коннекта к локальной базе данных.
Проверка установленного ODBC драйвера
Запросы будем отправлять с помощью стандартного кубика Данные -> Базы данных:
Первым делом - нужно проверить, вдруг драйвер ODBC для PostgreSQL уже установлен, тогда можно будет сразу перейти к предпоследнему шагу (Настройка ODBC). Для проверки тыкаем:
- Конструктор подключений, появляется окно "Choose Data Source":
- Далее выбираем:
Data Source: "<other>"
Data Provider: .NET бла-бла ODBC - Нажимаем "OK", появляется окно "Connection properties":
- Первым делом проверяем нет ли уже предустановленного соединения в строке: "Use user or system data source name", если есть что-то вроде "PostgreSQL" - пробуем его (жмакаем Test Connection), если нету - так и должно быть
- Далее ставим галочку на "Use connection string"
- Нажимаем "Build..." и видим окно "Выбор источника данных":
- Переходим во вкладку "Источники данных компьютера" (там тоже должно быть пусто и ничего, связанного с PostgreSQL не должно быть, иначе выбираем то, что есть и снова тестируем соединение)
- Нажимаем кнопку "Создать" (во вкладке "Источники данных компьютера"!), видим окно: "Создание нового источника данных":
- Выбираем "Пользовательский" или "Системный" (любой) - скорее всего вам не принципиально
- Нажимаем "Далее" и видим список источников/драйверов в системе:
Суть в том, что у вас скорее всего НЕ будет драйвера PostgreSQL, это нормально, он почему-то не ставится вместе с PostgreSQL, а вот драйвер MySQL ODBC судя по всему - у меня поставился вместе с MySQL-Server.
- Если у вас есть драйвер - пробуйте вначале сделать подключение через него, пропускайте шаг установка драйвера. Если драйвера нет (как и у меня первоначально), то мы как раз идем к следующему разделу.
Установка драйвера ODBC
Дополнено: скорее всего драйвер ODBC можно поставить сразу вместе с установкой PostgreSQL или как минимум - запустить инсталлятор заново и выбрать установку драйверов ODBC (как это показано на первом скриншоте вот тут: https://docs.microsoft.com/ru-ru/sql/integration-services/import-export-data/connect-to-a-postgresql-data-source-sql-server-import-and-export-wizard ).
Переходим на сайт: https://odbc.postgresql.org/ (там вся инфа по ODBC, будет полезно тем, кто захочет копнуть глубже) и тыкаем "Downloads are available in source and binary formats at the PostgreSQL downloads site". Там выбираем каталог msi, выбираем версию драйвера, согласно установленной версии PostgreSQL (лучше вначале всегда пробовать последний драйвер, если не подойдет - тогда тестировать по мажорной версии своей СУБД), обязательно выбираем правильную разрядность системы.
Для меня это был файл: psqlodbc_10_00_0000-x64.zip
Распаковываем, устанавливаем, тут не должно возникнуть сложностей.
Единственное, что скорее всего для старых версий ZP (5.9 и ниже) - нужно будет ставить вместе и 32 битную и 64 битную версию, т.к. судя по этому посту - ранее ZP был 64-битный, а PM 32-битный. У меня на 5.12 - всё запустилось и в PM, и в ZP только с одним 64-битным драйвером, поэтому не пришлось делать извращения как в указанной выше теме.
Настройка ODBC
Открываем меню пуск, вбиваем в поиск odbc и видим:
(если не видим - очень плохо, тут я даже не знаю что делать, всё это по-идее должно быть установлено, если нет - нужно ставить какие-то компоненты скорее всего)
Тут почему-то пуск показывает дубли одного и того же, то есть по факту "Источники данных" и "Настройка источников данных" - это одно и тоже. Запускается одна и та же программа
Запускаем ту версию, разрядности которой у вас операционка. Вот на всякий случай пути к запускаемым программам:
- 32-битная версия: %windir%\syswow64\odbcad32.exe
- 64-битная версия: %windir%\system32\odbcad32.exe
- Нажимаем там "Добавить", видим снова окно из раздела 1, пункта 11:
Но с тем исключением, что в прошлый раз у нас не было драйверов для PostgrSQL, а сейчас есть. - Выбираем драйвер PostgreSQL Unicode (почему его - не знаю, но скорее всего для работы с русским языком в utf-8 не подойдет драйвер ANSI, но я точно не знаю - это чисто интуитивный выбор)
- После выбора драйвера нажимаем "Готово" и появляется окно "PostgreSQL Unicode ODBC Driver (psqlODBC) Setup":
- Далее производим настройки подключения к серверу БД:
Data Source: можно не менять, оставляем этот, это DSN название нашего подключения
Database: имя базы данных
Server: IP-адрес сервера, для локального подключения - 127.0.0.1
User Name: пользователь, по дефолту обычно - postgres
Description: можно ничего не писать
SSL Mode: я выбрал disable
Port: вводим порт, по умолчанию - 5432
Password: пароль для подключения к БД
Кнопки Options -> Data Source и Options -> Global можно не трогать, но может быть кому-то пригодится произвести там дополнительные настройки. Очень много инфы про то, что там есть описано вот тут в конце статьи: http://citforum.ru/database/postgres/windows.shtml - После этого нажимаем кнопку "Test" - должно появиться сообщение "Connection successful"
- Нажимаем "Save"
- Всё, нажимаем "OK" в администраторе источника данных ODBC и возвращаемся к ProjectMaker, чтобы теперь подключиться из него к БД.
Подключение к PostgreSQL из ZennoPoster через ODBC
Самый последний шаг. Если вы дошли до этого раздела, то уже скорее всего прихерели сколько всего нужно сделать. Не пугайтесь, всё что было до этого - подготовительная работа. Для соединения с PgSQL в ProjectMaker вы будете делать только то, что написано в этом разделе. Поэтому я посчитал нужным чуть продублировать информацию с первого раздела о проверке драйвера.
- Выбираем наш кубик "Запрос к базе данных"/"Работа с базами данных":
- Переходим в конструктор подключений, выбираем Data Source:
Data Source: <other>
Data provider: .NET ... ODBC - После подтверждения (нажатия на OK) мы попадаем в "Connection properties":
- Выбираем созданный нами Data Source (источник данных) - как показано на скриншоте
- Нажимаем "Test Connection", должно появиться сообщение "Test connection succeeded", если оно появилось - ура, аплодируем и открываем бутылку шампанского! Дальше всё пойдет как по лубриканту)
- Нажимаем "OK" и видим, что настройки кубика подключения к БД в PM сменились на что-то вроде:
Если это произошло - значит всё окей, подключение к БД у вас "подцепилось". Но изначально (когда я только первый раз настраивал подключение) - я создавал "источник данных" прямо из самого ProjectMaker, а не через "Администратора источника данных", поэтому у меня строка подключения получилась очень длинной (но рабочей), вот такой:
Не знаю почему так вышло, но на всякий случай продублирую её сюда, вдруг кому-то пригодится:
Dsn=PostgreSQL35W;database=MyDB;server=127.0.0.1;port=5432;uid=postgres;pwd=12345;sslmode=disable;readonly=0;protocol=7.4;fakeoidindex=0;showoidcolumn=0;rowversioning=0;showsystemtables=0;fetch=100;unknownsizes=0;maxvarcharsize=255;maxlongvarcharsize=8190;debug=0;commlog=0;usedeclarefetch=0;textaslongvarchar=1;unknownsaslongvarchar=0;boolsaschar=1;parse=0;lfconversion=1;updatablecursors=1;trueisminus1=0;bi=0;byteaaslongvarbinary=1;useserversideprepare=1;lowercaseidentifier=0;xaopt=1
Надеюсь, что мой (как оказалось) длинный мануал кому-то поможет. Пусть даже не сейчас, а через годик-два
Используемые источники (полезные ссылки)
- https://www.connectionstrings.com/postgresql/ - различные строки подключения СУБД PostgreSQL, но в целом - они вроде как не подходят без настройки источника данных.
- http://citforum.ru/database/postgres/windows.shtml - много чуть устаревшей инфы по настройке и установке ODBC драйвера
- https://odbc.postgresql.org/howto-csharp.html - пример работы с PostgreSQL из C# через ODBC. Но скорее всего пример или уже не рабочий или косячный (в конце очень смущает меня цикл for)
- https://wiki.postgresql.org/wiki/Using_Microsoft_.NET_with_the_PostgreSQL_Database_Server_via_ODBC - ещё один пример для работы с БД из .NET
- https://docs.microsoft.com/ru-ru/sql/integration-services/import-export-data/connect-to-a-postgresql-data-source-sql-server-import-and-export-wizard - ещё статья о подключении к PgSQL от Microsoft, тут уже даже показано, что ODBC драйвер можно было поставить при установке PostgreSQL, но я, по всей вероятности, из-за незнания этого не сделал в момент установки
- http://zennolab.com/discussion/threads/postgresql.25762/ - старый вопрос на форуме, который с помощью последних скриншотов (заголовков окна в скринах) привел меня к пониманию как это всё работает
Post Scriptum (в виде дополнения, годные статьи почему PostgreSQL, а не MySQL)
- Чем PostgreSQL лучше других SQL баз данных с открытым исходным кодом. Часть 1
- Чем PostgreSQL лучше других SQL баз данных с открытым исходным кодом. Часть 2
- Сравнение MySQL и PostgreSQL
- SQLite, MySQL и PostgreSQL: сравниваем популярные реляционные СУБД
- Возможности PostgreSQL, которых нет в MySQL, и наоборот
- Google: postgresql vs mysql
Для запуска проектов требуется программа ZennoPoster.
Это основное приложение, предназначенное для выполнения автоматизированных шаблонов действий (ботов).
Подробнее...
Для того чтобы запустить шаблон, откройте программу ZennoPoster. Нажмите кнопку «Добавить», и выберите файл проекта, который хотите запустить.
Подробнее о том, где и как выполняется проект.
Последнее редактирование: