sql—使用powershell将数据插入odbc目标

unguejic  于 2021-07-24  发布在  Java
关注(0)|答案(1)|浏览(569)

我需要加载数据表到odbc驱动程序连接与powershell。通过oledb和sql server,我们可以快速使用大容量复制和插入数据。
odbc有这样的可能性吗?
我之所以使用powershell,是因为它应该对此类操作提供最好的支持,但我当前的代码没有使用DLL的一个部分。
因此,我的代码首先需要创建一个包含两个for循环的insert语句,对每一行进行迭代并将其保存在内存中,然后构造包含1000行的insert-into,然后重复相同的操作。
我注定会这样吗?

$Datatable = New-Object System.Data.DataTable
    $tabledump= $src_cmd.ExecuteReader()
    $Datatable.Load($tabledump)

    foreach ($item in $Datatable.Rows) {

        $f +=1

        for ($i = 0; $i -lt $item.ItemArray.Length; $i++) {
            $items = $item[$i] -replace "'" , "''"
            $val +="'"+ $items + "',"
        }

        $vals +=  $val

        if ($f % 1000 -eq 0 -or $f -eq $row_cnt) {

            $values = [system.String]::Join(" ", $vals)
            $values = $values.TrimEnd(",")

            $cols =  [system.String]::Join(",", $columns)

            $postgresCommand = "Insert Into $dst_schema.$dst_table ($cols) values $values"

            $dest_cmd_.CommandText = $postgresCommand

            $dest_cmd_.ExecuteNonQuery()

糟糕的代码我承认,任何关于代码组合的建议都是欢迎的。

j2datikz

j2datikz1#

您可以使用getodbcdsn命令来检索odbc连接的值,并将其用于查询

$conn.ConnectionString= "DSN=$dsn;"
  $cmd = new-object System.Data.Odbc.OdbcCommand($query,$conn)
  $conn.open()
  $cmd.ExecuteNonQuery()
  $conn.close()

https://www.andersrodland.com/working-with-odbc-connections-in-powershell/
但是odbc提供程序不执行批量复制
https://docs.microsoft.com/en-us/sql/relational-databases/native-client-odbc-bulk-copy-operations/performing-bulk-copy-operations-odbc?view=sql-server-ver15

相关问题