2016-04-25 9 views
0

Ich habe eine SQL-Datei mit einer Reihe von Aufgaben und Quelldateien einlesen erwähnt:
Die Datei unten wie folgt aussieht:eine Text-Datei innerhalb einer SQL-Datei

SET @NAME='ABC' 
SOURCE c:/dev/test.sql 
SOURCE c:/dev/test1.sql 
. 
. 
. 
SOURCE c:/dev/test100.sql 

SET @NAME='MNO' 
SOURCE c:/dev/test.sql 
SOURCE c:/dev/test1.sql 
. 
. 
. 
SOURCE c:/dev/test100.sql 

Die in den SOURCE c:/dev/* genannten Dateien ist Wiederholen für jede Zuweisung mit dem Befehl SET.

Gibt es eine Möglichkeit, mit der ich die Dateinamen aus einer anderen Testdatei lesen kann, so dass ich die Redundanz des Codes in meiner .SQL-Datei vermeiden kann.

Jede Hilfe wäre willkommen!

Dank

+1

Zuerst müssen Sie entscheiden, welche DBMS Sie verwenden. Sicher brauchst du das nicht für mysql, sql server und oracle ??? Und selbst wenn Sie das tun, werden die Antworten sehr unterschiedlich sein. –

+0

Ich verwende mysql. Gibt es trotzdem den Code zu minimieren? Ich habe 100 von sqls als Eingabe für die 'QUELLE ...' – Neethu

+0

Hoffentlich wird jemand helfen können. Ich bin ein SQL-Server-Typ und kann nicht einmal mysql buchstabieren. –

Antwort

1

Versuchen:

Datei: /path/to/file/test.sql

SELECT CONCAT('FROM test.sql @`NAME`: ', @`NAME`); 

Datei: /path/to/file/allTestFiles.sql

SOURCE /path/to/file/test.sql 
SOURCE /path/to/file/test1.sql 
SOURCE /path/to/file/test2.sql 
# . 
# . 
# . 
# SOURCE /path/to/file/test100.sql 

Datei: /path/to/file/master.sql

SET @`NAME` := 'ABC'; 
SOURCE /path/to/file/allTestFiles.sql 

SET @`NAME` := 'MNO'; 
SOURCE /path/to/file/allTestFiles.sql 

Test:

mysql> SOURCE /path/to/file/master.sql 
Query OK, 0 rows affected (0.00 sec) 

+--------------------------------------------+ 
| CONCAT('FROM test.sql @`NAME`: ', @`NAME`) | 
+--------------------------------------------+ 
| FROM test.sql @`NAME`: ABC     | 
+--------------------------------------------+ 
1 row in set (0.00 sec) 

+---------------------------------------------+ 
| CONCAT('FROM test1.sql @`NAME`: ', @`NAME`) | 
+---------------------------------------------+ 
| FROM test1.sql @`NAME`: ABC     | 
+---------------------------------------------+ 
1 row in set (0.00 sec) 

+---------------------------------------------+ 
| CONCAT('FROM test2.sql @`NAME`: ', @`NAME`) | 
+---------------------------------------------+ 
| FROM test2.sql @`NAME`: ABC     | 
+---------------------------------------------+ 
1 row in set (0.00 sec) 

Query OK, 0 rows affected (0.00 sec) 

+--------------------------------------------+ 
| CONCAT('FROM test.sql @`NAME`: ', @`NAME`) | 
+--------------------------------------------+ 
| FROM test.sql @`NAME`: MNO     | 
+--------------------------------------------+ 
1 row in set (0.00 sec) 

+---------------------------------------------+ 
| CONCAT('FROM test1.sql @`NAME`: ', @`NAME`) | 
+---------------------------------------------+ 
| FROM test1.sql @`NAME`: MNO     | 
+---------------------------------------------+ 
1 row in set (0.00 sec) 

+---------------------------------------------+ 
| CONCAT('FROM test2.sql @`NAME`: ', @`NAME`) | 
+---------------------------------------------+ 
| FROM test2.sql @`NAME`: MNO     | 
+---------------------------------------------+ 
1 row in set (0.00 sec)