我在使用 Powershell for Linux(7.2.1)的 Ubuntu 服務器(20.04 LTS)上,并試圖弄清楚如何從也安裝在同一 Ubuntu 服務器上的 Postgres 13 資料庫中讀取和寫入。
任何人都可以發布一個示例腳本來展示這是如何完成的嗎?大多數腳本都假定涉及 Windows,但事實并非如此。我正在使用 Postgres 將用于訪問 MS SQL Server 的 Windows Powershell 腳本轉換為 Ubuntu 上的新家。我希望重用相同的 Powershell 邏輯,而不是在 Bash 中重寫腳本。
提前致謝!
uj5u.com熱心網友回復:
這是我在 Rhel 7 上使用的 ODBC 示例,pwsh v7.2.1,除了postgresql-odbc驅動程式之外沒有任何額外的模塊:
$conn = New-Object System.Data.Odbc.OdbcConnection
$conn.ConnectionString= "Driver={PostgreSQL};Server=SERVERNAME;Port=1234;Database=DBNAME;Uid=USERNAME;Pwd=PASS;"
$conn.open()
$query = 'SELECT * FROM pg_catalog.pg_tables'
$command = New-Object System.Data.Odbc.OdbcCommand($query,$conn)
# For commands/queries that return rows
$reader = $command.ExecuteReader()
# Optionally, convert reader output to DataTable object for viewing
# I disable constraints on my result table for this query. Otherwise returns "Failed to enable constraints"
$DataSet = New-Object Data.Dataset -Property @{ EnforceConstraints = $false }
$DataTable = New-Object Data.DataTable
$DataSet.Tables.Add($DataTable)
$DataTable.Load($reader,[Data.LoadOption]::OverwriteChanges)
# For Write/Inserts:
$command.ExecuteNonQuery() ## for commands that don't return data e.g. Update
# Cleanup:
$command.Dispose() ## OdbcCommand objects cannot be re-used, so it helps to close them after execution
$conn.Close() ## Connections can be reused, but close it before ending your script.
# displaying results
$DataTable|ft
schemaname tablename tableowner tablespace hasindexes hasrules hastriggers rowsecurity
---------- --------- ---------- ---------- ---------- -------- ----------- -----------
public sys_db_changelog admin01 1 0 0 0
public sys_server admin01 1 0 0 0
public sys_config admin01 1 0 0 0
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/410602.html
標籤:
