powershell写mysql_使用Powershell对MySql运行MySql存储过程脚本

本文介绍如何通过PowerShell在MySQL 5.6服务器上执行包含多个存储过程的.sql文件。内容包括建立数据库连接、读取.sql文件并尝试执行存储过程,但在执行时遇到DELIMITER命令相关的问题导致错误。
摘要由CSDN通过智能技术生成

我想在一个QA环境的MySQL 5.6服务器上执行一个MySQL存储过程。这是通过Azure piplines实现的持续交付的一部分。

.sql

文件有多个存储过程,MySQL Workbench成功执行了这些存储过程,但我希望通过PowerShell执行同一个文件。

.sql内容:

DROP procedure IF EXISTS `test`;

DELIMITER //

CREATE PROCEDURE `test` ()

BEGIN

select * from organisations;

END

//

DELIMITER ;

DROP procedure IF EXISTS `test1`;

DELIMITER //

CREATE PROCEDURE `test1` ()

BEGIN

select * from organisations;

END

//

DELIMITER ;

[System.Reflection.Assembly]::LoadWithPartialName("MySql.Data")

[string]$sMySQLUserName = 'xxx'

[string]$sMySQLPW = 'xxx'

[string]$sMySQLDB = 'xxx'

[string]$sMySQLHost = 'localhost'

[string]$sConnectionString = "server="+$sMySQLHost+";port=3306;uid=" + $sMySQLUserName + ";pwd=" + $sMySQLPW + ";database="+$sMySQLDB

$oConnection = New-Object MySql.Data.MySqlClient.MySqlConnection($sConnectionString)

$Error.Clear()

try

{

$oConnection.Open()

write-host "Connection opened"

}

catch

{

write-warning ("Could not open a connection to Database $sMySQLDB on Host $sMySQLHost. Error: "+$Error[0].ToString())

}

#$oTransAction=$oConnection.BeginTransaction()

$oMYSQLCommand = New-Object MySql.Data.MySqlClient.MySqlCommand

$oMYSQLCommand.Connection=$oConnection

#$oMYSQLCommand.Transaction=$oMYSQLTransaction

#$sql = Get-Content D:\Release\ConsoleDev\SqlScript\testprocedure.sql

$sql = [io.file]::ReadAllText('D:\Release\ConsoleDev\SqlScript\testprocedure - Copy.sql')

$oMYSQLCommand.CommandText = $sql

write-host $sql

try

{

$iRowsAffected=$oMYSQLCommand.executeNonQuery()

}

catch

{

write-warning ("ERROR occured while ExecuteNonQuery")

}

# Do some Inserts or updates here and commit your changes

finally

{

$oConnection.Close()

write-host "Closing Connection"

}

PowerShell引发以下错误:

警告:ExecuteNonQuery时出错

我认为在执行DELIMITER//时出现了问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值