mysql - 在sql文件中读取文本文件

标签 mysql sql

我有一个.sql文件,其中包含一组分配和源文件:
该文件如下所示:

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


SOURCE c:/dev/*中提到的文件对于使用SET命令的每个分配重复。

有没有一种方法可以读取其他测试文件中的文件名,从而可以避免.sql文件中代码的冗余。

任何帮助,将不胜感激!

谢谢

最佳答案

尝试:

文件:/path/to/file/test.sql

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


文件:/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


文件:/path/to/file/master.sql

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

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


测试:

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)

关于mysql - 在sql文件中读取文本文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36850477/

相关文章:

mysql - 获取每组行的最大值的正确 ID

mysql - 将匹配 'numbers'的相对记录分配给mysql group_concat函数中的每条记录

mysql - 对于外表中不存在的记录,avg() 值设置为默认值 0

php - 使用多个 where 子句进行删除非常慢

mysql - 检索每组中的最后一条记录 - MySQL

php - 打印结果以查看多页结果

mysql - 使用having表达式连接多个表

mysql - NOLOGGING 不起作用

mysql - SQL过滤掉一些数据?

php - 一次获取 2 个查询