如何使用 PowerShell 脚本将 .sql 文件导入 MySQL?

Beh*_*016 2 mysql powershell

我正在尝试将转储文件(包含 CREATE/DROP/INSERT 命令的 .sql 文件)从 Windows 环境导入远程 MySQL 服务器。我有这个 PowerShell 脚本通过使用安装在我的环境中的“MySQL shell 实用程序”功能来为我完成这项工作

Set-ExecutionPolicy RemoteSigned
Add-Type –Path 'C:\Program Files (x86)\MySQL\MySQL Connector Net 8.0.11\Assemblies\v4.5.2\MySql.Data.dll'
$Connection = [MySql.Data.MySqlClient.MySqlConnection]@{ConnectionString='server=192.168.100.100;Encrypt=false;uid=myUser;pwd=myPass;database=myDB;'}
$Connection.Open()
$sql = New-Object MySql.Data.MySqlClient.MySqlCommand
$sql.Connection = $Connection
$sql.CommandText = "SOURCE D:/MySQL_Dumps/myFile.sql"
$sql.ExecuteNonQuery()
$Reader.Close()
$Connection.Close()
Run Code Online (Sandbox Code Playgroud)

我可以连接到服务器,并执行基本的SELECT查询,使用ExecuteNonQuery()/ ExecuteScalar()/ExecuteReader()方法,但收到此特定的源命令的错误:

使用“0”参数调用“ExecuteNonQuery”的异常:“您有一个错误
在您的 SQL 语法中;检查与您的 MySQL 服务器相对应的手册
在“源”附近使用正确语法的版本
D:/MySQL_Dumps/myFile.sql' at line 1" At line:8 char:1
+ $sql.ExecuteNonQuery()
+ ~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo : NotSpecified: (:) [], MethodInvocationException
    + FullQualifiedErrorId : MySqlException

我尝试了几种替代方法来输入路径,比如使用双斜杠或双反斜杠,但遇到了同样的错误。任何人都可以帮忙吗?

小智 8

./mysql -u root -p DatabaseName -e "source C:\path\to\my_sql_file.sql"
Run Code Online (Sandbox Code Playgroud)

  • 这可以解决@mytuny 的问题。但是你能解释一下“-e”标志之后发生了什么或者请给我指出一篇文章吗?当我试图理解那部分时,我一直在摸不着头脑。 (2认同)
  • 对于那些偶然发现这条线索、需要和解释的人。`-e` 或 `--execute` 标志用于执行 SQL 语句。如果您已经在 MySQL shell 中或想要从文件执行语句,则可以使用 MySQL 命令“source”。[执行手册](https://dev.mysql.com/doc/refman/8.0/en/mysql-command-options.html#option_mysql_execute) [源手册](https://dev.mysql.com/doc/ refman/8.0/en/mysql-batch-commands.html) (2认同)