powershell脚本中的sql命令
提前感谢您花时间回顾我遇到的这个问题 我正试图简化一个流程,将UPS追踪号码上传到我们的ERP系统中。基本上,我正在尝试将所有进程合并到一个powershell脚本中。我正在挂断sql部分以更新我们的ERP。sql代码本身在通过sql management studio运行时可以工作,因为它是我们当前过程的一部分,但当嵌入到powershell中时,它会出错 以下是基本逻辑:powershell脚本中的sql命令,sql,sql-server,tsql,powershell,scripting,Sql,Sql Server,Tsql,Powershell,Scripting,提前感谢您花时间回顾我遇到的这个问题 我正试图简化一个流程,将UPS追踪号码上传到我们的ERP系统中。基本上,我正在尝试将所有进程合并到一个powershell脚本中。我正在挂断sql部分以更新我们的ERP。sql代码本身在通过sql management studio运行时可以工作,因为它是我们当前过程的一部分,但当嵌入到powershell中时,它会出错 以下是基本逻辑: 按摩4个csv文件(我们发货的每个仓库一个) 执行4个sql查询 在我的代码中,我处理了4个有效的文件,为了测试,我做了
**The 'from' keyword is not supported in this version of the language.
At C:\Users\dallan\desktop\sqltest3.ps1:56 char:8
+ FROM <<<< 'D:`\Work`\COSTCA`\CSV`\trackcal.csv'
+ CategoryInfo : ParserError: (:) [], ParseException
+ FullyQualifiedErrorId : FromKeywordNotAllowed**
正如你所看到的,我逃离了很多我认为powershell会抓狂的角色。如果部分问题与此有关,我不会感到惊讶
非常感谢您的帮助 \
,(
/)
和[
/]
不需要转义。去掉所有这些,因为它有点混乱,并且可能容易出错
但是您收到的错误表明不支持
from
关键字(看起来这是针对您正在使用的批量插入
语句。这是什么版本的SQL server?我删除了\、(、)、[和]的转义符。下面是我现在收到的错误:表达式或语句中出现意外标记“NOT”。在C:\Users\dallan\desktop\sqltest4.ps1:45 char:30+[CSTPONBR][char](21)NOT这是SQL server 2008 R2请尝试去掉[char]的方括号
,看一看。如果我将查询复制/粘贴到SSMS中,它会起作用。我还应该删除方括号吗?看一看Jeff Snover关于here字符串和变量扩展的这篇博文。基本上,你不需要在here字符串中转义任何内容。
#CALGARY
[io.file]::readalltext("`\`\DYNAMICS`\D`$`\Work`\COSTCA`\CSV`\trackcalgp.csv").replace("89400","0089400") | Out-File "`\`\DYNAMICS`\D`$`\Work`\COSTCA`\CSV`\trackcal1.csv" -Encoding ascii –Force
[io.file]::readalltext("`\`\DYNAMICS`\D`$`\Work`\COSTCA`\CSV`\trackcal1.csv").replace(".0","") | Out-File "`\`\DYNAMICS`\D`$`\Work`\COSTCA`\CSV`\trackcal2.csv" -Encoding ascii –Force
[io.file]::readalltext("`\`\DYNAMICS`\D`$`\Work`\COSTCA`\CSV`\trackcal2.csv").replace('"',"") | Out-File "`\`\DYNAMICS`\D`$`\Work`\COSTCA`\CSV`\trackcal.csv" -Encoding ascii –Force
$text = [IO.File]::ReadAllText("`\`\DYNAMICS`\D`$`\Work`\COSTCA`\CSV`\trackcal.csv")
[IO.File]::WriteAllText("`\`\DYNAMICS`\D`$`\Work`\COSTCA`\CSV`\trackcal.csv", $text.TrimEnd())
#MONTREAL
[io.file]::readalltext("`\`\DYNAMICS`\D`$`\Work`\COSTCA`\CSV`\trackmtlgp.csv").replace("89400","0089400") | Out-File "`\`\DYNAMICS`\D`$`\Work`\COSTCA`\CSV`\trackmtl1.csv" -Encoding ascii –Force
[io.file]::readalltext("`\`\DYNAMICS`\D`$`\Work`\COSTCA`\CSV`\trackmtl1.csv").replace(".0","") | Out-File "`\`\DYNAMICS`\D`$`\Work`\COSTCA`\CSV`\trackmtl2.csv" -Encoding ascii –Force
[io.file]::readalltext("`\`\DYNAMICS`\D`$`\Work`\COSTCA`\CSV`\trackmtl2.csv").replace('"',"") | Out-File "`\`\DYNAMICS`\D`$`\Work`\COSTCA`\CSV`\trackmtl.csv" -Encoding ascii –Force
$text = [IO.File]::ReadAllText("`\`\DYNAMICS`\D`$`\Work`\COSTCA`\CSV`\trackmtl.csv")
[IO.File]::WriteAllText("`\`\DYNAMICS`\D`$`\Work`\COSTCA`\CSV`\trackmtl.csv", $text.TrimEnd())
#TORONTO
[io.file]::readalltext("`\`\DYNAMICS`\D`$`\Work`\COSTCA`\CSV`\tracktorgp.csv").replace("89400","0089400") | Out-File "`\`\DYNAMICS`\D`$`\Work`\COSTCA`\CSV`\tracktor1.csv" -Encoding ascii –Force
[io.file]::readalltext("`\`\DYNAMICS`\D`$`\Work`\COSTCA`\CSV`\tracktor1.csv").replace(".0","") | Out-File "`\`\DYNAMICS`\D`$`\Work`\COSTCA`\CSV`\tracktor2.csv" -Encoding ascii –Force
[io.file]::readalltext("`\`\DYNAMICS`\D`$`\Work`\COSTCA`\CSV`\tracktor2.csv").replace('"',"") | Out-File "`\`\DYNAMICS`\D`$`\Work`\COSTCA`\CSV`\tracktor.csv" -Encoding ascii –Force
$text = [IO.File]::ReadAllText("`\`\DYNAMICS`\D`$`\Work`\COSTCA`\CSV`\tracktor.csv")
[IO.File]::WriteAllText("`\`\DYNAMICS`\D`$`\Work`\COSTCA`\CSV`\tracktor.csv", $text.TrimEnd())
#VANCOUVER
[io.file]::readalltext("`\`\DYNAMICS`\D`$`\Work`\COSTCA`\CSV`\trackvangp.csv").replace("89400","0089400") | Out-File "`\`\DYNAMICS`\D`$`\Work`\COSTCA`\CSV`\trackvan1.csv" -Encoding ascii –Force
[io.file]::readalltext("`\`\DYNAMICS`\D`$`\Work`\COSTCA`\CSV`\trackvan1.csv").replace(".0","") | Out-File "`\`\DYNAMICS`\D`$`\Work`\COSTCA`\CSV`\trackvan2.csv" -Encoding ascii –Force
[io.file]::readalltext("`\`\DYNAMICS`\D`$`\Work`\COSTCA`\CSV`\trackvan2.csv").replace('"',"") | Out-File "`\`\DYNAMICS`\D`$`\Work`\COSTCA`\CSV`\trackvan.csv" -Encoding ascii –Force
$text = [IO.File]::ReadAllText("`\`\DYNAMICS`\D`$`\Work`\COSTCA`\CSV`\trackvan.csv")
[IO.File]::WriteAllText("`\`\DYNAMICS`\D`$`\Work`\COSTCA`\CSV`\trackvan.csv", $text.TrimEnd())
#UPLOAD
$SQLServer = "DYNAMICS" #use Server`\Instance for named SQL instances!
$SQLDBName = "RDOT"
$SqlQuery1 = @"
CREATE TABLE #Tmp_TRACK
`(
`[CSTPONBR`] `[char`]`(21`) NOT NULL,
`[Tracking_Number`] `[char`]`(41`) NOT NULL
`)
CREATE TABLE #Tmp_TRACK1
`(
`[SOPNUMBE`] `[char`]`(21`) NOT NULL,
`[CSTPONBR`] `[char`](21) NOT NULL,
`[Tracking_Number`] `[char`]`(41`) NOT NULL
`)
BULK INSERT #Tmp_TRACK
FROM 'D:`\Work`\COSTCA`\CSV`\trackcal.csv'
WITH `(
FIRSTROW = 2,
DATAFILETYPE='char',
FIELDTERMINATOR=','
`);
INSERT INTO #Tmp_TRACK1
SELECT
SOP10100.SOPNUMBE,
#Tmp_TRACK.CSTPONBR,
#Tmp_TRACK.Tracking_Number
FROM
SOP10100 INNER JOIN
#Tmp_TRACK ON
SOP10100.CSTPONBR = #Tmp_TRACK.CSTPONBR AND
SOP10100.SOPTYPE = 3
INSERT INTO SOP10107 `(SOPNUMBE, SOPTYPE, Tracking_Number`)
SELECT SOPNUMBE, 3, TRACKING_NUMBER FROM #Tmp_TRACK1
select * from sop10107 where sopnumbe in `(SELECT SOPNUMBE from SOP10100 where SOPTYPE = 3 and CUSTNMBR = 'COSTCA' and DOCDATE = CONVERT`(Datetime, FLOOR(CONVERT`(float,GETDATE`(`)`)`)`)`)
drop table #TMP_TRACK
drop table #TMP_TRACK1
"@
$SqlQuery2 = "select * from IV00101 where ITEMNMBR = 'B16P'"
$SqlQuery3 = "select * from IV00101 where ITEMNMBR = 'B16P'"
$SqlQuery4 = "select * from IV00101 where ITEMNMBR = 'B16P'"
$SqlQuery5 = "select * from IV00101 where ITEMNMBR = 'B16P'"
$SqlConnection = New-Object System.Data.SqlClient.SqlConnection
$SqlConnection.ConnectionString = "Server = $SQLServer; Database = $SQLDBName; Integrated Security = False; User ID = sa; Password = mypassword"
$SqlCmd1 = New-Object System.Data.SqlClient.SqlCommand
$SqlCmd2 = New-Object System.Data.SqlClient.SqlCommand
$SqlCmd3 = New-Object System.Data.SqlClient.SqlCommand
$SqlCmd4 = New-Object System.Data.SqlClient.SqlCommand
$SqlCmd5 = New-Object System.Data.SqlClient.SqlCommand
$SqlCmd1.CommandText = $SqlQuery1
$SqlCmd2.CommandText = $SqlQuery2
$SqlCmd3.CommandText = $SqlQuery3
$SqlCmd4.CommandText = $SqlQuery4
$SqlCmd5.CommandText = $SqlQuery5
$SqlCmd1.Connection = $SqlConnection
$SqlCmd2.Connection = $SqlConnection
$SqlCmd3.Connection = $SqlConnection
$SqlCmd4.Connection = $SqlConnection
$SqlCmd5.Connection = $SqlConnection
$SqlAdapter1 = New-Object System.Data.SqlClient.SqlDataAdapter
$SqlAdapter2 = New-Object System.Data.SqlClient.SqlDataAdapter
$SqlAdapter3 = New-Object System.Data.SqlClient.SqlDataAdapter
$SqlAdapter4 = New-Object System.Data.SqlClient.SqlDataAdapter
$SqlAdapter5 = New-Object System.Data.SqlClient.SqlDataAdapter
$SqlAdapter1.SelectCommand = $SqlCmd1
$SqlAdapter2.SelectCommand = $SqlCmd2
$SqlAdapter3.SelectCommand = $SqlCmd3
$SqlAdapter4.SelectCommand = $SqlCmd4
$SqlAdapter5.SelectCommand = $SqlCmd5
$DataSet1 = New-Object System.Data.DataSet
$DataSet2 = New-Object System.Data.DataSet
$DataSet3 = New-Object System.Data.DataSet
$DataSet4 = New-Object System.Data.DataSet
$DataSet5 = New-Object System.Data.DataSet
$SqlAdapter1.Fill($DataSet1)
$SqlAdapter2.Fill($DataSet2)
$SqlAdapter3.Fill($DataSet3)
$SqlAdapter4.Fill($DataSet4)
$SqlAdapter5.Fill($DataSet5)
$SqlConnection.Close()
#next line is a pause
$x = $host.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown")
clear
$DataSet1.Tables[0]
$DataSet2.Tables[0]
$DataSet3.Tables[0]
$DataSet4.Tables[0]
$DataSet5.Tables[0]