我正在尝试从命令行运行一些 mysql 脚本。一个是自动生成的,它不会事先选择数据库。现在我有两个脚本:
mysql -u <user> -p<password> < script1.sql
mysql -u <user> -p<password> < script2.sql
script1 的最后一行是,USE mydatabase;
但是当我运行 script2 时,它说没有选择数据库。有没有办法指定用于 script2 的数据库?
我正在尝试从命令行运行一些 mysql 脚本。一个是自动生成的,它不会事先选择数据库。现在我有两个脚本:
mysql -u <user> -p<password> < script1.sql
mysql -u <user> -p<password> < script2.sql
script1 的最后一行是,USE mydatabase;
但是当我运行 script2 时,它说没有选择数据库。有没有办法指定用于 script2 的数据库?
像这样添加参数-D
mysql -u<username> -p<password -D<database> < script.sql
mysql -u <user> -p<password> my_database_name < script2.sql
在您的情况下发生是因为这些是 2 个独立的进程,并且来自第一个的查询与来自第二个的查询没有连接。
另一种解决方案是放在USE database_name
script2.sql 中的第一行
@Desislav 的解决方案可行(其他解决方案是use database
在顶部添加 ' ' 命令script2.sql
),但要澄清您的问题
script1 的最后一行是 USE mydatabase;
这对 没有帮助script2
,因为script2
将在不同的进程中执行,您必须再次指定数据库。
在*nix
(Unix、Linux 等)下,您可以使用cat
命令来组合这两个脚本。
cat script1.sql script2.sql | mysql -u <user> -p<password>
copy
在 DOS/Windows 下你可以使用命令的一个鲜为人知的特性
copy script1.sql+script2.sql | mysql -u <user> -p<password>