Какие foreign data wrapper для MS SQL Server 2019 на Postgresql 15 брать?
Дано: Есть Postgresql 15 на Linux-сервере. Надо, чтобы этот Postgresql смог прочесть и записать данные на MS SQL Server 2019. Вопрос - какие foreign data wrapper ставить? И откуда брать?
Re: Какие foreign data wrapper для MS SQL Server 2019 на Postgresql 15 брать?
Foreign Data Wrappers in PostgreSQL Databases (postgres_fdw & dblink)
Эти два (postgres_fdw и dblink) позволяют устанавливать связь ТОЛЬКО с другими postgre-серверами (и входят в состав Postgre по умолчанию). А мне нужно с MS SQL Server законнектиться.
А что, ссылка из официального списка не подходит? Я понимаю, что там написано "unstable", но исходники же есть, можно допилить если не взлетает.
TDS Foreign data wrapper Допилить? Не ну можно наверное, но проще на одну субд перейти.
SD писал(а) Thu, 31 October 2024 15:30 А что, ссылка из официального списка не подходит? Я понимаю, что там написано "unstable", но исходники же есть, можно допилить если не взлетает. Ага, представляю себе, какое лицо будет у директора, когда я ему скажу: "Извините, но поставленную вами задачу выполнить в поставленные вами сроки невозможно, потому что foreign data wrapper для sql server-a сначала допилить надо, а он на си написан, и мне сначала надо этот язык выучить". Вот почему, когда я пользуюсь проприетарным софтом Microsoft-a, то всё работает как надо с первого раза, и все драйвера найти легко, и все обвязки нужные есть, и сделал нужное действие - и никаких лишних телодвижений делать не надо? А когда речь заходит про этот долбанный опенсорс - то приходится иметь дело с фекалиями, написанными криворуким говном? "Вы добавили пользователя в Postgre? Заебись, а теперь добавьте этого же пользователя в какой-то дебильный файл, который лежит хрен знает где. У Вас нет прав на доступ к файлу? Это ваши проблемы, а у разработчиков Postgre -руки из жопы." "Вы хотите использовать переменные в Postgre? Создавайте неименованный пакет, и забудьте про получение select-ов оттуда напрямую. Только через временные таблицы!" "Имена постоянных и временных таблиц в Postgre ничем не отличаются. Postgre - не для склеротиков!" "Вам в Linux нужен нормальный (хотя бы времён MS DOS), а не консольный текстовый редактор прошлого тысячелетия? МПХ Вам, а не нормальный редактор. Это же СЕРВЕР, тут x-windows нет, и не предвидится, а редактор, работающий в текстовом режиме без x-windows - это так сложно!". "Ваш коллега поставил на сервер mc, и вы обрадовались, что по кнопке F4 сможете пользоваться нормальным текстовым редактором времён MS-DOS, как в VC и NC? Идите отсосите - эта кнопка запускает vim, а не нормальный редактор". Продолжение следует.
Цитата: Вот почему, когда я пользуюсь проприетарным софтом Microsoft-a, то всё работает как надо с первого раза, и все драйвера найти легко, и все обвязки нужные есть, и сделал нужное действие - и никаких лишних телодвижений делать не надо? Дык эта... Что тебе, собственно, мешает наладить нужную тебе связь в обратную сторону: создав linked server на стороне MS SQL, раз уж там "всё работает как надо с первого раза"?..
SD писал(а) Fri, 01 November 2024 01:48 Цитата: Вот почему, когда я пользуюсь проприетарным софтом Microsoft-a, то всё работает как надо с первого раза, и все драйвера найти легко, и все обвязки нужные есть, и сделал нужное действие - и никаких лишних телодвижений делать не надо? Дык эта... Что тебе, собственно, мешает наладить нужную тебе связь в обратную сторону: создав linked server на стороне MS SQL, раз уж там "всё работает как надо с первого раза"?.. Да на стороне MS SQL уже всё создано, и работает, и на Postgre данные засылаются успешно. Но проблема в том, что и на стороне Postgre новые данные генерируются, и сразу после генерации должны пинком (скорее всего, при помощи триггера) отправляться на MS SQL, а вариант с регулярным запуском задания на стороне MS SQL руководству не нравится.
DaniilGray писал(а) Fri, 01 November 2024 12:16 Да на стороне MS SQL уже всё создано, и работает, и на Postgre данные засылаются успешно. "Давно" это неделю и со второй попытки?..
SD писал(а) Fri, 01 November 2024 15:34 DaniilGray писал(а) Fri, 01 November 2024 12:16 Да на стороне MS SQL уже всё создано, и работает, и на Postgre данные засылаются успешно. "Давно" это неделю и со второй попытки?.. Это была очень тяжёлая неделя, так что давно, да. И со второй попытки - из-за проблем со стороны Postgre (выше ругался, что после создания пользователя в Postgre его потом ещё надо руками прописывать в файле). Так... по поводу FDW - поставили tds_fdw. И, как я понимаю, библиотеку freetds. Далее читаю совсем-не-торт-Хабр. Там пример настройки библиотеки freetds перед созданием fdw для нужного сервера для именованного инстанса: Перед использованием tds_fdw необходимо настроить FreeTDS. Настройка FreeTDS для подключения к MS SQL Server выполняется с помощью файла /etc/freetds/freetds.conf. Например, добавим такое содержимое: Цитата: [mssql01] host = 192.168.0.1 port = 1433 tds version = 7.1 instance = MSSQL01 Всё бы хорошо. А если у нас версия библиотеки 1.0 - то 7.1 меняю на 7.4 - не вопрос. Для неименованного инстанса добавляем так: [mssql01] host = 192.168.0.1 port = 1433 tds version = 7.1 Всё, вопрос закрыт.
Новый вопрос возник. Как выяснилось, tds_fdw не поддерживает изменение данных, поэтому нужен другой wrapper. Нашёл только odbc_fdw и ogr_fdw. Буду пробовать.