10
votes

SQL Parser en C

Je veux analyser et stocker les colonnes et les valeurs d'une instruction SQL DML (Insérer, Mettre à jour, Supprimer) dans C. Besoin de l'URL du code source Open Source ou d'une bibliothèque avec laquelle je peux relier mon programme C. La plate-forme est SUSE Linux. Ont essayé de faire et d'utiliser libsql sans succès. Une réponse détaillée est appréciée. Merci.

Remarques supplémentaires: Veuillez suggérer une bibliothèque / code que je peux créer un lien avec mon programme C. Dans mon programme, je souhaite utiliser les fonctions de cette bibliothèque pour analyser et utiliser les jetons pour un traitement ultérieur.


0 commentaires

9 Réponses :


-3
votes

Avez-vous envisagé d'écrire votre propre utilisation de Lex et YACC? (le pirate informatique - approche hardcore)

pas trivial .. mais Ce site pourrait vous aider à obtenir a commencé


0 commentaires

1
votes

0 commentaires

1
votes

Avez-vous regardé SQLite ? Il a certainement le code pour analyser SQL, alors peut-être que vous pourriez éviter de le réimplanter ..


0 commentaires

11
votes

Vous pouvez consulter le code source pour SQLite. Il utilise un analyseur appelé citron.

Liens:

Architecture SQLite

Parser de citron

Vous pouvez également consulter le code source de PostgreSQL-PLPYTHON3. On dirait qu'il a un analyseur SQL PUL basé sur C.

lien:

PostgreSQL-PLPYTHON3 @ github


1 commentaires

Analyseur citron! Je ne savais pas à ce sujet. J'ai hâte de l'utiliser dans mon propre projet.



5
votes

Je suggérerais de commencer à partir de l'analyseur réel d'un vrai SGBD. Il y en a plusieurs dans un logiciel libre. Par exemple, l'analyseur de PostgreSQL est dans le répertoire SRC / Backend / Parser de la distribution et est écrit en C et Yacc.


0 commentaires

1
votes

antlr peut cible C , entre autres langues, et son Catalogue de grammaires prématures a un tas de dialectes SQL - notamment MySQL et Oracle.


0 commentaires

0
votes

Vous n'êtes pas sûr d'y avoir un analyseur mature C SQL peut le faire facilement.

Voici une bibliothèque SQL de la version Java peut faire ce dont vous avez besoin exactement, il peut être utilisé pour Table de récupération / refacteur et nom de colonne à partir d'une requête SQL complexe facilement.


1 commentaires

Vous avez peut-être mentionné qu'il s'agit d'un produit commercial.



1
votes

μSQL pour C ++

Qu'est-ce que μSQL?

μSQL est un moteur de parser SQL pour C ++ pour développer des applications basées sur SQL facilement, et il prend en charge les autres langues spécifiques de domaine SQL, telles que en tant que UNQL et GQL aussi. Parce que μSQL n'est écrit que dans l'ancien standard C ++ Bibliothèque telle que STL avec ANTLR, vous pouvez alors l'utiliser avec de nombreux C ++ compilateurs et plates-formes.

repo sur github


0 commentaires

1
votes

Le standalone SQL Parser du système de base de données HYRISE est open source et, même si elle est écrit en C ++, on peut accéder à C et est facile à comprendre et à modifier. Il utilise Bison et Flex.


0 commentaires