Показаны сообщения с ярлыком cl-mssql. Показать все сообщения
Показаны сообщения с ярлыком cl-mssql. Показать все сообщения

вторник, 16 ноября 2010 г.

cl-mssql и FreeTDS-0.82

Обновил у себя FreeTDS до версии 0.82 и обнаружил проблемы с кодировками. Я использую cl-mssql для взаимодействия с 1С, данные там лежат в кодировке cp1251, а у меня в системе используется utf-8. Версия FreeTDS-0.62 кажется вообще никак не учитывала кодировки, поэтому в cl-mssql есть параметр соединения :external-format, который использовался для настройки переменной cffi:*default-foreign-encoding* - я устанавливал его в :cp1251 и спокойно работал. Версия FreeTDS-0.82 уже относится к этому не так просто и, вероятно, самостоятельно занимается перекодированием строк (а может как-то по другому взаимодействует с сервером, я не спец в этом вопросе). Теперь приходиться настраивать кодировку в /etc/freetds.conf:
[global]
client charset = utf8
Кодировка, указанная в /etc/freetds.conf, должна совпадать с кодировкой, которая указывается в mssql:connect (по-умолчанию - :utf-8).

четверг, 29 апреля 2010 г.

cl-mssql-0.0.2

Поскольку у меня возникла по работе необходимость писать в MS SQL (ранее я только читал оттуда), то добавил к пакету функцию mssql:execute и поддержку транзакций (путём тривиальной адаптации кода из postmodern).

По-прежнему, для развития проекта ищется человек, который имеет более серьёзные чем я потребности по работе с MS SQL из Common Lisp (из под Linux).

вторник, 6 октября 2009 г.

cl-mssql

По работе мне необходимо вычитывать данные из 1С, поэтому возникла необходимость в разработке библиотеки для работы с MS SQL Server. SQL Server и Sybase поддерживают протокол TDS (Tabular Data Stream), для которого есть свободная реализация FreeTDS. Я, признаться, совершенно туп в этом вопросе, поэтому взял код pymssql и путем его анализа написал на Common Lisp пару сотен строк, которые используют libsybdb.so (cffi) и позволяют:
  • соединяться с базой
  • делать запрос и получать результат (далеко не для всех типов данных)
  • конвертировать ошибки и предупрежедния сервера в conditions и warrnings
В данный момент ничего больше от этой библиотеки мне не надо и развития она пока не получает, а жалко, может кому может пригодиться. Поэтому, приглашаются желающие помочь развитию библиотеки :)

Страница проекта: http://code.google.com/p/cl-mssql/
Исходный код: http://github.com/archimag/cl-mssql

Да, тут есть один важный момент. Часто в MS SQL данные хранятся в cp1251 (особенно, ели речь идёт о 1С), но babel (от которой зависит CFFI) версии 3.0 эту кодировку не поддерживает. Для решения этой проблемы я написал патч, который сейчас включён в исходный код проекта, но релиза с тех пор ещё не было. Так что, если вы захотите использовать cl-mssql с cp1251 необходимо использовать последнию версию babel:
darcs get http://common-lisp.net/project/babel/darcs/babel