- Pgsql odbc driver windows
- ODBC драйвера и их установка
- Настройка OBDC драйверов
- Финал
- Замечания по Delphi
- Настройка ODBC драйвера PostgreSQL
- Подключение к источнику данных PostgreSQL (мастер импорта и экспорта SQL Server) Connect to a PostgreSQL Data Source (SQL Server Import and Export Wizard)
- Получение драйвера ODBC для PostgreSQL Get the PostgreSQL ODBC driver
- Установка драйвера ODBC с помощью построителя стека Install the ODBC driver with Stack Builder
- Скачивание последней версии драйвера ODBC Or, download the latest ODBC driver
- Подключение к PostgreSQL с помощью драйвера ODBC для PostgreSQL (psqlODBC) Connect to PostgreSQL with the PostgreSQL ODBC driver (psqlODBC)
- Указываемые параметры (драйвер ODBC для PostgreSQL) Options to specify (PostgreSQL ODBC driver)
- Формат строки подключения Connection string format
- Ввод строки подключения Enter the connection string
- Другие поставщики данных и дополнительные сведения Other data providers and more info
Pgsql odbc driver windows
PostgreSQL изначально писался для UNIX систем, но сегодня уже существует версия для Microsoft Windows NT. Таким образом даже пользователи Windows сегодня могут устанавливать сервер PostgreSQL себе на машину. Вы можете скачать версию PostgreSQL для Windows NT прямо с FTP сервера Postgresql ftp://ftp.postgresql.org .
Тем не менее, для Windows95/98 так и для Windows NT с давних пор существовали ODBC и JDBC драйвера, при использовании которых можно было вполне сносно работать с сервером PostgreSQL , работающим на каком-либо UNIX’е. Далее речь пойдет об ODBC драйверах.
ODBC драйвера и их установка
Первый и наверняка наиболее серьезный вопрос состоит в наверное уже крылатой фразе: «А где возьмешь?». Что сказать вам по этому поводу? Взять можно во многих местах. Я рекомендую опять-таки ftp://ftp.postgresql.org . Там всегда самая свежая версия. Скачать нужно, понятное дело, файл postdrv.exe, который я положил сюда, дабы не заставлять вас тратить время понапрасну.
Это самораспаковывающийся архив в установкой через InstallShield. То есть все, что вам нужно сделать для установки, это скачать данный файл в какой-нибудь временный каталог, а затем запустить его. Данный архив содержит еще и менеджер ODBC драйвера, который я рекомендую вам поставить (вам будет задан соответствующий вопрос во время установки). Однако, для того, чтобы начать работать, установки недостаточно. Вам еще необходимо произвести настройку ODBC через ODBC Administrator, который вызывается из окна Панель управления (Control Panel) под именем 32bit ODBC .
Настройка OBDC драйверов
Итак, запускаем 32bit ODBC . В результате получаем диалоговое окно, следующего вида:
У вас в окне по всей видимости будет пусто. У меня, как видите уже установлен ODBC драйвер для Interbase. Нажимаем кнопку Add. и снова получаем диалоговое окно вида:
Выбираем «PostgreSQL» и нажимаем кнопку Готово . В результате имеем еще одно окно вида:
Поля Database , Server , Username и Password в вашем случае будут пустыми и вам необходимо заполнить их самостоятельно. Тут никаких трудностей возникнуть не должно: Database — база данных, с которой вы будете работать, Server — машина, на которой работает PostgreSQL, Username и Password — соответственно имя пользователя и пароль с использованием которых будет осуществляться подключение к базе данных (это значит, что на сервере с PostgreSQL у вас должен быть заведен пользователь именно с таким именем и паролем).
Важное замечание :
Я установил, что заполнение полей Username и Password не является необходимым. Более того, оно вредно, поскольку Windows хранит эти значения в реестре в PLAIN TEXT. Т.е. любой пионер, который научился пользоваться программой regedit может прочитать ваш пароль!
Параметр Port вам необходимо сменить только в том случае, если вы работаете с нестандартным портом (см. файл /etc/postgresql/postmaster.init на предмет изменения номера порта).
Как видно из рисунка, есть еще две кнопки Driver и DataSource .
При нажатии на кнопку Driver получаем окно вида:
В этом окне я рекомендую установить флажок Recognize Unique Indexes . Если вам нужно протоколирование транзакций, то установите CommitLog(C:\postodbc.log . Понятно, что Read Only надо убрать. Еще я убираю Disable Generic Optimizer . Читайте про то, что обозначают настройки ниже.
При нажатии на кнопку DataSource получаем окно вида:
Сразу же рекомендую убрать флажек ReadOnly . А вот Protocol нужно установить в зависимости от версии PostgreSQL, с которой вы работаете. Я также включаю флажек Show Column , так как он не мешает. Читайте про то, что обозначают настройки ниже.
Важное замечание :
Я установил, что включение флажка Row Versioning приводит к проблеме в Delphi , так как при формировании запросов, Delphi считает, что в любой таблице должно существовать поле xid , чего естественно в реальности нет. Т.е. этот флажок устанавливать не нужно.
Финал
Ну вот собственно и все. Теперь вы можете работать с сервером PostgreSQL , с помощью любой программы в Microsoft Windows, которая знает как общаться через ODBC драйвера.
Замечания по Delphi
Эти два случая из моего опыта работы с PostgreSQL из Delphi.
Первую фичу я обнаружил на методе AppendRecord . Оказывается, чтобы данный метод отработал успешно, нужно первым элементом списка ставить nil , иначе, при выполнении возникнет ошибка. Т.е. теперь AppendRecord будет выглядеть, например так: а не так, как делается, например, при работе с Interbase:
Вторая фича касается какой-то веселой ситуации, возникшей у меня один раз с сервером. По какой-то причине, тот отказывал в обслуживании клиентам. Похоже, это произошло потому, что в этот момент выполнялся какой-то процесс по обслуживанию базы данных на самом сервере.
Симптомом послужило то, что при обращении к PostgreSQL из программы на Deplhi, сама программа весилась намертво. При этом курсор принимал на экране характерную форму при выполнении SQL запроса. Однако этот запрос все продолжал выполняться и продолжал. Через 5 минут мне это надоело и я снял задачу принудительно.
Чем было вызвано зависание программы я даже не знаю. По идее должен был отработать тайм-аут по истечении которого, должна была появиться ошибка, но этого не случилось. Может виновата кривость BDE, может ODBC драйвера.
Вылечилось просто — на сервере был перезапущен PostgreSQL .
Настройка ODBC драйвера PostgreSQL
Диалоговое окно «Driver» в «Advanced Options»
DEFAULTS
Нажмите эту кнопку для восстановления настроек по умолчанию.
Disable Genetic Optimizer
Автоматически выключает оптимизатор во время соединения. Это удобнее, чем выставлять специальную настройку в параметрах соединения. Данная особенность была добавлена, когда мы заметили, что сервер имеет проблемы при оптимизации некоторых запросов.
KSQO (Keyset Query Optimization)
Данная особенность помогает определенным запросам отрабатываться на сервере не заваливая его. Некоторые приложения, например MS Jet Database Engine используют «keyset» запросы вида: Запросы такого типа будут приводить к заваливанию сервера без KSQO.
CommitLog (C:\psqlodbc.log)
В данный файл происходит журналирование соединений с сервером. Его хорошо использовать для отладки.
Recognize Unique Indexes
Этот флаг управляет результатом вызова SQLStatistics() для уникальных индексов. По умолчанию он не установлен. Это позволяет Access 95 и Access 97 спрашивать пользователя об индексах во время соединения.
Read Only (default)
Новые источники данных будут наследовать состояние «Только для чтения».
Use Declare/Fetch
Если флаг выставлен (по умолчанию это так), то драйвер автоматически использует создание курсора и fetch для управления операторами SELECT, оставляя 100 строк в кэше. В большинстве случаев это сильно помогает, когда вы заинтересованы только в чтении, а не в обновлении. Результаты не занимают много памяти для буферизации всего списка изменений. Если флаг сброшен, то курсор использоваться не будет, а драйвер будет выдавать все данные результата. Для очень больших таблиц, это очень плохо и может привести к тому, что будет использована вся память Windows. Однако, это может более лучшим образом управлять UPDATE, так как таблицы не остаются открытыми, как в случае использования курсора. Тем не менее, из-за более экономного расхода памяти, использование данного флага все равно дает лучшую производительность.
Parse Statement
Если флаг выставлен, то драйвер будет анализировать операторы запроса SQL для определения колонок и таблиц, а также статистики о них, такой как точность, псевдонимы, нулевые записи и т.д. Все это можно получить через вызовы SQLDescribeCol, SQLColAttributes и SQLNumResultCols. Анализатор корректно определяет колонки, которые являются результатами выражений и функций, не взирая на сложность, но он не пытается определить типы данных или точность для этих колонок.
Важное замечание : Я установил, что включение флажка Parse Statement приводит к проблеме в Delphi . Я не знаю, кто виноват — Delphi или ODBC драйвера, но при выполнении запросов вида: «SELECT t1.field1, t2.field2, MyFunction(arg1) AS func1, MyFunction(arg2) AS func2, t3.field3 FROM. «, Delphi вернет вам в наборе данных (TDataSet и его потомки) только поля field1, field2 и func1. Поле func2 и другие поля, указанные после func2, в набор данных не попадут!
Unknown Sizes
- Maximum — всегда возвращать максимально возможную точность
- Dont Know — возвращать значение «Не знаю» и пусть приложение решает само
- Longest — возвращать наибольшую длину строки, которая встретится в записях. Остерегайтесь устанавливать такую настройку, когда используете курсоры, потому что размер кэша может не позволить найти наибольшую строку в кэше.
Этот флаг управляет значениями, которые будут возвращаться вызовами SQLDescribeCol и SQLColAttributes как точность для символьных типов данных (VARCHAR, TEXT и UNKNOWN), когда точность неизвестна.
Data Types Options
- Text as LongVarChar — Тип PostgreSQL TEXT отображается как SQLLongVarchar, а не SQLVarchar.
- Unknowns as LongVarChar — Неизвестные типы данных (массивы и т.д.) отображаются как SQLLongVarchar, а не SQLVarchar.
- Bools as Char — Логический тип данных BOOL отображается как SQL_CHAR, а не как SQL_BIT.
Этот флаг оказывает влияние на отображение некоторых типов данных:
Cache Size
Когда используются курсоры, это значение определяет размер кэша в строках. Если курсоры не используются, то значение говорит сколько памяти занимает результат запроса в любой заданный момент. По умолчанию кэш занимает 100 строк в любом случая.
Max Varchar
Максимальная точность типов VARCHAR и BPCHAR(char[x]). По умолчанию она равна 254 символа, так как 255-й является завершающим нулем.
Max LongVarChar
Максимальная точность типа LogVarChar. По умолчанию она равна 4094, так как 4095 символ является завершающим нулем. Вы можете даже задать размер (-4), который представляет собой константу SQL_NO_TOTAL.
SysTable Prefixes
Дополнительные префиксы имен таблиц, по которым будут узнаваться системные таблицы. Драйвер уже будет считать имена, начинающиеся с «pg_» системными таблицами. Здесь же вы можете добавить свои. Отделяйте кажный префикс друг от друга точкой с запятой.
Connect Settings
Эти команды будут посланы серверу при успешном соединении. Для отделения команд друг от друга используйте точку с запятой. Здесь теперь можно управлять любым запросом, даже если он возвращает результаты. Результаты однако будут отбрасываться.
Диалоговое окно «Data Source» в «Advanced Options»
Read Only
Если не установлен, то наборы данных можно будет изменять. Для новых наборов данных, по умолчанию берется значение из диалогового окна Driver.
Connect Settings
Драйвер посылает эти команды к серверу после успешного соединения. Он делает это ПОСЛЕ того как отправит Connect Settings, заданные в диалоговом окне Driver. Для отделения команд друг от друга используйте точку с запятой. Здесь теперь можно управлять любым запросом, даже если он возвращает результаты. Результаты однако будут отбрасываться.
Row Versioning
Разрешает приложениям определять какие данные были изменены другими пользователями, пока вы пытались изменить строку. Это также ускоряет процесс обновления так как даже для одной колонки нет нужды перечислять остальные значения для обновления строки. Драйвер использует системное поле PostgreSQL «xmin» чтобы разрешить Row Versioning. Продукты Microsoft также могут использовать эту возможность. Смотрите FAQ для подробностей.
Show System Tables
Драйвер будет считать системные таблицы обычными в SQLTables. Это хорошо если вы хотите работать с системными таблицами.
OID Options
- Show Column — Включает поле OID в SQLColumns. Это хорошо для использования этого поля как уникального идентификатора при изменении записей если не существует нужного ключа ИЛИ если такой ключ содержит много частей.
- Fake Index — Данная опция переключает уникальный индекс на OID. Это полезно, когда нет реального уникального индекса для OID и для приложений, которые не могут спросить про то, какие уникальные индексы существуют (например Access 2.0).
Protocol
Выбирайте протокол по номеру версии вашего сервера PostgreSQL.
Подключение к источнику данных PostgreSQL (мастер импорта и экспорта SQL Server) Connect to a PostgreSQL Data Source (SQL Server Import and Export Wizard)
Применимо к: Applies to: SQL Server SQL Server (все поддерживаемые версии) SQL Server SQL Server (all supported versions) Azure-SSIS Integration Runtime в Фабрике данных Azure SSIS Integration Runtime in Azure Data Factory Azure-SSIS Integration Runtime в Фабрике данных Azure SSIS Integration Runtime in Azure Data Factory Применимо к: Applies to: SQL Server SQL Server (все поддерживаемые версии) SQL Server SQL Server (all supported versions) Azure-SSIS Integration Runtime в Фабрике данных Azure SSIS Integration Runtime in Azure Data Factory Azure-SSIS Integration Runtime в Фабрике данных Azure SSIS Integration Runtime in Azure Data Factory
В этом разделе показано, как подключаться к источникам данных PostgreSQL со страницы Выбор источника данных или Выбор назначения в мастере импорта и экспорта SQL Server. This topic shows you how to connect to a PostgreSQL data source from the Choose a Data Source or Choose a Destination page of the SQL Server Import and Export Wizard.
Подробные требования и необходимые условия для подключения к базе данных PostgreSQL выходят за рамки этой статьи Майкрософт. The detailed requirements and prerequisites for connecting to a PostgreSQL database are beyond the scope of this Microsoft article. В ней предполагается, что у вас уже установлено клиентское программное обеспечение PostgreSQL и вы можете успешно подключиться к целевой базе данных PostgreSQL. This article assumes that you already have PostgreSQL client software installed and that you can already connect successfully to the target PostgreSQL database. Для получения дополнительных сведений обратитесь к администратору базы данных PostgreSQL или к документации по PostgreSQL. For more info, consult your PostgreSQL database administrator or the PostgreSQL documentation.
Получение драйвера ODBC для PostgreSQL Get the PostgreSQL ODBC driver
Установка драйвера ODBC с помощью построителя стека Install the ODBC driver with Stack Builder
Запустите построитель стека, чтобы добавить драйвер ODBC для PostgreSQL (psqlODBC) в вашу установку PostgreSQL. Run Stack Builder to add the PostgreSQL ODBC driver (psqlODBC) to your installation of PostgreSQL.
Скачивание последней версии драйвера ODBC Or, download the latest ODBC driver
Или скачайте установщик Windows для последней версии драйвера ODBC для PostgreSQL (psqlODBC) прямо с этого FTP-сайта — https://www.postgresql.org/ftp/odbc/versions/msi/. Or, download the Windows installer for the latest version of the PostgreSQL ODBC driver (psqlODBC) directly from this FTP site — https://www.postgresql.org/ftp/odbc/versions/msi/. Извлеките содержимое ZIP-файла и запустите файл MSI. Extract the files from the .zip file and run the .msi file.
Подключение к PostgreSQL с помощью драйвера ODBC для PostgreSQL (psqlODBC) Connect to PostgreSQL with the PostgreSQL ODBC driver (psqlODBC)
Драйверы ODBC не приводятся в раскрывающемся списке источников данных. ODBC drivers aren’t listed in the drop-down list of data sources. Чтобы подключиться с помощью драйвера ODBC, сначала выберите поставщик данных .NET Framework для ODBC в качестве источника данных на странице Выбор источника данных или Выбор назначения. To connect with an ODBC driver, start by selecting the .NET Framework Data Provider for ODBC as the data source on the Choose a Data Source or Choose a Destination page. Этот поставщик служит оболочкой для драйвера ODBC. This provider acts as a wrapper around the ODBC driver.
Ниже показан экран, который появляется сразу после выбора поставщика данных .NET Framework для ODBC. Here’s the generic screen that you see immediately after selecting the .NET Framework Data Provider for ODBC.
Указываемые параметры (драйвер ODBC для PostgreSQL) Options to specify (PostgreSQL ODBC driver)
Параметры подключения для этого поставщика данных и драйвера ODBC одинаковы независимо от того, является ли PostgreSQL источником или назначением. The connection options for this data provider and ODBC driver are the same whether PostgreSQL is your source or your destination. Таким образом, на страницах Выбор источника данных и Выбор назначения мастера отображаются одинаковые параметры. That is, the options you see are the same on both the Choose a Data Source and the Choose a Destination pages of the wizard.
Чтобы подключиться к PostgreSQL с помощью драйвера ODBC для PostgreSQL, соберите строку подключения, используя указанные ниже параметры и их значения. To connect to PostgreSQL with the PostgreSQL ODBC driver, assemble a connection string that includes the following settings and their values. Полный формат строки подключения приведен после списка параметров. The format of a complete connection string immediately follows the list of settings.
Вы можете получить помощь в построении строки подключения. Get help assembling a connection string that’s just right. Кроме того, вместо указания строки подключения вы можете предоставить существующее имя DSN (имя источника данных) или создать новое. Or, instead of providing a connection string, provide an existing DSN (data source name) or create a new one. Дополнительные сведения об этих возможностях см. в разделе Подключение к источнику данных ODBC. For more info about these options, see Connect to an ODBC Data Source.
Драйвер Driver
Имя драйвера ODBC — PostgreSQL ODBC Driver(UNICODE) или PostgreSQL ODBC Driver(ANSI). The name of the ODBC driver — either PostgreSQL ODBC Driver(UNICODE) or PostgreSQL ODBC Driver(ANSI).
Server Server
Имя сервера PostgreSQL. The name of the PostgreSQL server.
порт. Port
Порт, используемый для подключения к серверу PostgreSQL. The port to use to connect to the PostgreSQL server.
База данных Database
Имя базы данных PostgreSQL. The name of the PostgreSQL database.
Uid и Pwd Uid and Pwd
Uid (идентификатор пользователя) и Pwd (пароль) для подключения. The Uid (user id) and Pwd (password) to connect.
Формат строки подключения Connection string format
Ниже приведен формат типичной строки подключения. Here’s the format of a typical connection string.
Ввод строки подключения Enter the connection string
Введите строку подключения в поле ConnectionString либо введите имя DSN в поле Dsn на странице Выбор источника данных или Выбор назначения. Enter the connection string in the ConnectionString field, or enter the DSN name in the Dsn field, on the Choose a Data Source or Choose a Destination page. После того как вы введете строку подключения, мастер проанализирует ее и отобразит отдельные свойства и их значения в списке. After you enter the connection string, the wizard parses the string and displays the individual properties and their values in the list.
В приведенном ниже примере используется следующая строка подключения: The following example uses this connection string.
Ниже показан экран, который появляется после ввода строки подключения. Here’s the screen that you see after entering the connection string.
Другие поставщики данных и дополнительные сведения Other data providers and more info
Сведения о подключении к PostgreSQL с помощью поставщика данных, не представленного в этом списке, см. в разделе Строки подключения PostgreSQL. For info about how to connect to PostgreSQL with a data provider that’s not listed here, see PostgreSQL connection strings. Этот сторонний сайт также содержит дополнительные сведения о поставщиках данных и параметрах подключения, описанных на этой странице. This third-party site also contains more info about the data providers and the connection parameters described on this page.