我需要加载数据表到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()
糟糕的代码我承认,任何关于代码组合的建议都是欢迎的。
1条答案
按热度按时间j2datikz1#
您可以使用getodbcdsn命令来检索odbc连接的值,并将其用于查询
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