【发布时间】:2021-05-23 01:37:02
【问题描述】:
我需要将数据表加载到与 powershell 的 ODBC 驱动程序连接。 借助 OLEDB 和 SQL 服务器,我们可以使用 Bulk Copy 并快速插入数据。
ODBC 有这样的可能性吗?
我使用 powershell 是因为它应该对这类操作有最好的支持, 但我当前的代码没有使用任何 dll。
所以我的代码首先需要创建一个带有两个for循环的插入语句,并在每一行上迭代并将其保存在内存中, 然后用 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()
我承认代码不好,欢迎任何关于代码组合的建议。
【问题讨论】:
标签: sql powershell odbc