Importer fichier sql node.js et de les exécuter à l'encontre de PostgreSQL

Je suis à la recherche d'un moyen efficace de prendre un raw sql fichier et de l'exécuter de manière synchrone sur une base de données postgres, qui s'apparente à si vous il a couru à travers psql.

J'ai un fichier sql qui crée toutes les bases de données, importation de données, etc. J'ai besoin d'exécuter cette aide node.js mais impossible de trouver un module qui le fait automatiquement. Pour l'node.js l'application elle-même, nous utilisons nœud-postgres ('pg'), knex.js et bookshelf.js. Je suppose cependant que le pg est le meilleur pour ce.

Une alternative, je peux penser à est de lire l'intégralité de ce fichier, de le diviser par des points-virgules, remplacer les retours à la ligne avec des espaces, découper le double de l'espace, puis de l'injecter dans pg, un par un, de manière qu'elles sont exécutées de manière séquentielle, pas de manière asynchrone. Je suis un peu surpris de voir si c'est vraiment la façon la plus efficace et aussi si pas de bibliothèques existent encore à résoudre. Je suis un peu hésitant à sauter en elle, voyant que la syntaxe SQL peut lui-même être un peu difficile et j'ai accidentellement mash it up.

Quelques précisions à l'avance:

  • psql ne peut pas être utilisé car il n'est pas installé sur la machine cible
  • J'ai choisi de développer et de contrôle de source sql dans sql natif de forme, parce qu'il est beaucoup plus facile pour un administrateur de base à utiliser et à manipuler
C'est plus difficile que votre première pensée parce que vous avez besoin de distinguer les littéraux de mots-clés dans le SQL. Comme un exemple trivial, séparer par des points-virgules vous ne pouvez pas travailler avec insert into table values(';');

OriginalL'auteur rgareth | 2014-03-25