2010-03-07 5 views
2

Pour commencer avec db2. Une question rapide à propos de lui donner des commandes SQL à partir d'un fichier.Scripts db2 sql et newlines

Si je cours:

db2 -f mySQLcommands 

et toutes mes commandes sont une des commandes SQL ligne qu'ils exécutent sans problème. si je mets des sauts de ligne au milieu de mes déclarations sql alors db2 revient avec « attendu tel ou tel caractère après » Voici un exemple avec de nouvelles lignes:

CREATE TABLE Example (
       id int) 

S'il n'y avait pas de nouvelle ligne, il serait exécuté. J'ai testé rapidement dans nano, ce qui signifie qu'il utilise probablement le caractère \ n.

Répondre

4

Utilisez le commutateur de ligne de commande -t pour permettre des déclarations à plusieurs lignes qui sont par défaut terminé par un point-virgule;

par exemple.

db2 -t -f mySQLcommands 

CREATE TABLE Example (
       id int); 
0

Pas une réponse directe à votre question, mais une alternative est use something like PyDB2 et laissez Python gérer l'interface avec DB2.

Quelque chose comme cela devrait faire:

import pydb2 

mysqlstmt = open('create_table_example.sql', 'r').read() # multi-line SQL is ok 

conn = pydb2.connect(database="db", host="hst", user="usr", password="pswd") 
c = conn.cursor() 

c.execute(mysqlstmt) 

conn.commit() 
c.close() 
conn.close() 

mysqlstmt.close() 
+0

Il doit s'agir d'un fichier SQL texte brut. Pas ma décision. :( –

+0

@Chris: vous pouvez certainement lire une requête à partir d'un fichier en texte brut et l'envoyer à DB2 en utilisant la méthode ci-dessus.Les fichiers afaik .sql sont en texte brut, je fais ce genre de choses tous les jours. – bernie