Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
powershell脚本中的sql命令_Sql_Sql Server_Tsql_Powershell_Scripting - Fatal编程技术网

powershell脚本中的sql命令

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个有效的文件,为了测试,我做了

提前感谢您花时间回顾我遇到的这个问题

我正试图简化一个流程,将UPS追踪号码上传到我们的ERP系统中。基本上,我正在尝试将所有进程合并到一个powershell脚本中。我正在挂断sql部分以更新我们的ERP。sql代码本身在通过sql management studio运行时可以工作,因为它是我们当前过程的一部分,但当嵌入到powershell中时,它会出错

以下是基本逻辑:

  • 按摩4个csv文件(我们发货的每个仓库一个)
  • 执行4个sql查询
  • 在我的代码中,我处理了4个有效的文件,为了测试,我做了几个测试查询,看看sql连接是否有效。您将看到实际返回数据的select语句

    错误:

    **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]