MySQL Include a script within script

匿名 (未验证) 提交于 2019-12-03 02:49:01

问题:

I'm involved is a project to migrate a project from Oracle to MySQL. In Oracle I have the ability to create a SQL script that references or inlcudes other external SQL script files when the batch is run via command line. I Have a script called CreateAllTables.sql that looks like this internally:

@tables\Site.sql @tables\Language.sql @tables\Country.sql @tables\Locale.sql @tables\Tag.sql 

I'm already aware of the MySQL command line "Source" command, but my goal is to invoke a single main .sql script file that includes other scripts via one single command line call like this:

mysql --user=root --password --database=junkdb -vv < CreateAllTables.sql 

So my question is how do I do this with MySQL?

回答1:

source works for me.

# -- foo.sql DROP TABLE foo; source bar.sql  # -- bar.sql CREATE TABLE bar (i INT NOT NULL);  $ mysql ... < foo.sql 

Now table foo is gone and bar is created.



回答2:

Note that the "source" option, above, only works (for me) if the script is run through a mysql client that supports it. (The mysql command-line client referenced in the OP's original question happens to be one of those clients.)

But remember "source" is not one of the many mysql-specific extensions to the sql language. It's a client-command, not a sql statement,

Why do you care?

If you're sending your sql script to the MySQL server via an alternative method (via JDBC's "execSQL", for example) the "source" command will not work for the inclusion of other scripts.



回答3:

You can do a similar thing with source in mysql.

I have inc1.sql with these contents:

use test; create table testinc(    id int   ); 

And inc2.sql like this:

insert into testinc values (1); 

and main.sql like this:

source inc1.sql source inc2.sql 

And i can run main.sql like this:

mysql -uroot -pmysql -P3351 -e"Source main.sql" 

After that I can verify that it worked by doing this:

mysql> use test; Database changed mysql> select * from testinc; +------+ | id   | +------+ |    1 | +------+ 1 row in set (0.00 sec) 


标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!