gpt4 book ai didi

mysql - 如何通过 powershell 使用 SQL 定界符

转载 作者:可可西里 更新时间:2023-11-01 07:59:44 29 4
gpt4 key购买 nike

我试图读入一个由 powershell 执行的 sql 文件。一切正常,除了 powershell 因单词定界符而抛出错误。所以我的问题是如何在我的 sql 文件中使用定界符(我只能对 sql 文件进行微小的更改,其代码必须保持相对不变)但通过 powershell 正确加载它。

这是我从两个文件中得到的代码和我得到的错误。提前谢谢你。

电源外壳:

$sql = (Get-Content $pwd\NewClient.sql) | Out-String
$cmd.CommandText = "USE $dbname"
$cmd.ExecuteNonQuery()
$cmd.CommandText = $sql
$cmd.ExecuteNonQuery()

SQL:

delimiter //
......
end;//
delimiter ;

使用“0”参数调用“ExecuteNonQuery”时出现异常:“您的 SQL 语法有错误;请查看与您的 MySQL 服务器版本相对应的手册,了解在 'Delimiter//附近使用的正确语法。在第 1 行插入停止后创建触发器 stop_time_insert”

最佳答案

我知道这是一个非常古老的话题,但我认为这是唯一一个涵盖该主题的话题。回答的解决方案有效,但从 MySQL 命令提示符运行时不能使用相同的脚本。我创建了一个PS函数如下:

function executeScript([MySql.Data.MySqlClient.MySqlConnection]$conn, [String]$filePath)
{
$fileName = Split-Path $filePath -Leaf
Write-Host "Executing $fileName script"
$sqlText = Get-Content $filePath | Out-String
$sqlText = $sqlText.Replace("DELIMITER","-- DELIMITER")
$sqlText = $sqlText.Replace('$$',";")
return Invoke-MySql -sql $sqlText -connection $conn | Out-Null
}

假设一个SQL脚本如下:

DELIMITER $$
....
END $$
DELIMITER ;

Invoke-MySql 来自 Mike Shepard 的 MySQLLib 包。

现在可以从两个环境执行相同的脚本文件。

关于mysql - 如何通过 powershell 使用 SQL 定界符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10838489/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com