Парсер SQL в C - PullRequest
       59

Парсер SQL в C

9 голосов
/ 18 июля 2009

Я хочу проанализировать и сохранить столбцы и значения оператора SQL DML (INSERT, UPDATE, DELETE) на языке C. Требуется URL-адрес открытого исходного кода или библиотеки, с которой я могу связать свою программу на C. Платформа SUSE Linux. Попробовал сделать и использовать libSQL безуспешно. Подробный ответ приветствуется. Спасибо.

Дополнительные примечания: Пожалуйста, предложите библиотеку / код, который я могу связать с моей C-программой. В моей программе я хочу использовать функции этой библиотеки для разбора и использовать токены для дальнейшей обработки.

Ответы [ 9 ]

10 голосов
/ 18 июля 2009

Вы можете взглянуть на исходный код SQLite. Он использует парсер Lemon.

Ссылки:

Архитектура SQLite

Анализатор лимона

Вы также можете посмотреть исходный код для postgresql-plpython3. Похоже, у него есть синтаксический анализатор SQL на чистом языке C.

Ссылка:

postgresql-plpython3 @ github

4 голосов
/ 20 июля 2009

Я бы предложил начать с реального парсера реальной СУБД. Есть несколько в свободном программном обеспечении. Например, синтаксический анализатор PostgreSQL находится в каталоге src/backend/parser дистрибутива и записан на C и Yacc.

1 голос
/ 20 июля 2009

ANTLR может цель C , среди других языков, и в каталоге готовых грамматик есть несколько диалектов SQL - особенно MySQL и Oracle.

1 голос
/ 18 июля 2009

Вы смотрели на SQLite ? Конечно, у него есть код для разбора SQL, так что, возможно, вы могли бы избежать его переопределения ..

1 голос
/ 18 июля 2009

См. Главу " Синтаксический анализ SQL " в "Lex & Yacc" (O'Reilly) в книгах Google. http://books.google.fr/books?id=YrzpxNYegEkC&lpg=PT1&dq=bison%20flex%20sql%20grammar&client=firefox-a&hl=en&pg=PA109

0 голосов
/ 04 июня 2019

Автономный SQL-анализатор системы баз данных Hyrise имеет открытый исходный код, и, хотя он написан на C ++, к нему можно получить доступ из C, и его легко понять и изменить. Он использует зубров и гибких.

0 голосов
/ 07 декабря 2015

µSQL для C ++

Что такое µSQL?

µSQL - это механизм синтаксического анализа SQL для C ++ для разработки приложений на основе SQL легко, и он поддерживает другие SQL, такие как доменные языки, такие как как UnQL и GQL тоже. Потому что µSQL написан только на старом стандарте C ++ библиотека, такая как STL с ANTLR, то вы можете использовать ее со многими C ++ компиляторы и платформы.

Репо на Github

0 голосов
/ 08 января 2012

Не уверен, что любой зрелый C sql-парсер может сделать это легко.

Вот библиотека Java версии SQL, которая может делать именно то, что вам нужно, она может быть использована для Извлечения / рефакторинга таблицы и имени столбца из сложного запроса SQL.

0 голосов
/ 18 июля 2009

Рассматривали ли вы написать свои собственные, используя lex и yacc? (хакер - хардкорный подход)

Не тривиально .. но этот сайт может помочь вам начать

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...