簡體   English   中英

在PowerShell或Excel CSV中替換單引號

[英]Replace Single Quotes in PowerShell Or Excel CSV

我正在包裝一個腳本,該腳本獲取軟件版本並將其放入CSV,然后返回到powershell,最后返回到SQL。 某些軟件名稱中帶有單引號,不允許將其導入SQL。 我試圖在最終的SQL導出之前的某個時刻找到並用反引號替換這些單引號。 我的第一個直覺是通過powershell在excel中操作查找和替換功能來進行替換,但是我不確定該怎么做或這是否是最好的方法。

任何意見是極大的贊賞。 我對這一切都很陌生。

謝謝

編輯:到目前為止,感謝您的建議alroc。 我正在為這篇文章進行以下工作:

##SQL PART##
$CSV = Import-CSV -path $UpdatePath\$($todaydate).csv
import-module sqlps
ForEach ($item in $CSV){
$CSVAppID = $($item.AppID)
$CSVAppName = $($item.AppName)
$CSVVersion = $($item.Version)
$SqlServer = "redacted"
$SqlDB = "redacted"
$SoftwareTable = "redacted"

Invoke-Sqlcmd -ServerInstance "$SQLServer" -Database "$SqlDB" -query "INSERT INTO dbo.ecca_sw_standard_2 (name, version, product_id) VALUES (N'$CSVAppName', N'$CSVVersion' , N'$CSVAppID')"
}

一些變量值在字符串中包含單引號,而當獲得這幾個變量時,powershell會向我拋出錯誤。 “ Invoke-Sqlcmd:'S'附近的語法不正確。”

答案是在您的字符串中創建子表達式以將'替換為''

Invoke-Sqlcmd -ServerInstance "$SQLServer" -Database "$SqlDB" -query "INSERT INTO dbo.ecca_sw_standard_2 (name, version, product_id) VALUES (N'$($CSVAppName -replace "'", "''")', N'$($CSVVersion -replace "'", "''")' , N'$($CSVAppID -replace "'", "''")')"

這樣,當字符串擴展時,將適當地轉義以進行SQL插入。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM