вторник, 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

2 комментария:

  1. А я для ms sql в свое время cl-sql нормально (через odbc) использовал

    ОтветитьУдалить
  2. Тут есть два момент:
    * Я не видел бесплатных соответствующих odbc-драйверов для linux
    * Мне очень не нравится clsql

    ОтветитьУдалить