使用Powershell更新/插入SQL表

时间:2015-08-25 21:18:59

标签: sql powershell

因此,每次脚本运行时,我都需要使用文本文件中的数据更新现有表。我的当前代码会丢弃表并在每次运行时创建一个新表,这会导致大约10秒的延迟,我需要避免。我想改为更新数据而不重新创建表(希望减轻延迟?)。我理解UPDATEMERGE命令可用于此,但无法找出语法。

Function CreateAnalystTable($location, $file, $extension, $server, $database)
{
    $full = $location + $file + $extension
    $all = Get-Content $full
    $columns = $all[0]
        $columns = $columns.Replace(";","] VARCHAR(255), [")
    $table = "CREATE TABLE " + $file + "([" + $columns + "] VARCHAR(255))"
    $connection = New-Object System.Data.SqlClient.SqlConnection
    $buildTable = New-Object System.Data.SqlClient.SqlCommand
    $insertData = New-Object System.Data.SqlClient.SqlCommand
    $connection.ConnectionString = "Data Source=" + $server + ";Database=" + $database + ";integrated security=true"
    $buildTable.CommandText = $table
    $buildTable.Connection = $connection
    ## Added to function
    $x = 0
    $insertData.CommandText = "EXECUTE stp_CommaBulkInsert @1,@2"
    $insertData.Parameters.Add("@1", $full)
    $insertData.Parameters.Add("@2", $file)
    $insertData.Connection = $connection
    $connection.Open()
    $buildTable.ExecuteNonQuery()
    $connection.Close()
    ## Added to function
    $x = 1
    if ($x = 1)
    {
        $connection.Open()
        $insertData.ExecuteNonQuery()
        $connection.Close()
    }
}
CreateAnalystTable -location "PATH" -file "FILE" -extension ".txt" -server "SERVER" -database "DB"

SQL:

CREATE PROCEDURE stp_CommaBulkInsert
@file NVARCHAR(250), @table NVARCHAR(250)
AS
BEGIN
 DECLARE @f NVARCHAR(250), @t NVARCHAR(250), @s NVARCHAR(MAX)
 SET @f = @file
 SET @t = @table

 SET @s = N'BULK INSERT ' + @t + '
  FROM ''' + @f + '''
  WITH (
   FIELDTERMINATOR = '';''
   ,ROWTERMINATOR = ''0x0a''
   ,FIRSTROW=2
  )'

 EXEC sp_executesql @s
END

感谢任何帮助

1 个答案:

答案 0 :(得分:0)

我还没有完成PowerShell编码,但这段代码总会运行并执行,但我不知道为什么需要它。除非你需要两次运行你的stp。

$x = 1
if ($x = 1)
{
    $connection.Open()
    $insertData.ExecuteNonQuery()
    $connection.Close()
}

对于UPDATE语句,我将使用此站点作为基本UPDATE语句的示例。

http://www.w3schools.com/sql/sql_update.asp

只需更改$ table和$列以适应格式,它就应该运行。