我正在尝试使用PowerShell连接到远程PostgreSql数据库。这是我第一次使用powershell,所以如果这是一个菜鸟问题,我很抱歉。这是我的代码:
$DBConnectionString = "Driver={PostgreSQL UNICODE}:Server=$MyServer;Port=$MyPort;Database=$MyDB;Uid=$MyUid;Pwd=$MyPass;"
$DBConn = New-Object System.Data.Odbc.OdbcConnection;
$DBConn.ConnectionString = $DBConnectionString;
$DBConn.Open();
$DBCmd = $DBConn.CreateCommand();
$DBCmd.CommandText = "SELECT * FROM mytable;";
$DBCmd.ExecuteReader();
$DBConn.Close();
当我运行它时,我得到“异常调用”打开“带”0“参数:错误[IM002] [Microsoft] [ODBC驱动程序管理器]未找到数据源名称且未指定默认驱动程序”。我已经下载并安装了pgsqlodbc驱动程序,但我仍然收到此错误。有没有人有任何想法我怎么能解决这个问题?我已经在互联网上搜索了,而且我现在还没有到达任何地方。
感谢。
答案 0 :(得分:2)
咨询:https://odbc.postgresql.org/
下载:https://www.postgresql.org/ftp/odbc/versions/msi/
Windows上的数据源(ODBC):开始→搜索→odbc→用户DSN→添加/配置
示例:
$MyServer = "<ip>"
$MyPort = "5432"
$MyDB = "<database>"
$MyUid = "<user>"
$MyPass = "<pass>"
$DBConnectionString = "Driver={PostgreSQL UNICODE(x64)};Server=$MyServer;Port=$MyPort;Database=$MyDB;Uid=$MyUid;Pwd=$MyPass;"
$DBConn = New-Object System.Data.Odbc.OdbcConnection;
$DBConn.ConnectionString = $DBConnectionString;
$DBConn.Open();
$DBCmd = $DBConn.CreateCommand();
$DBCmd.CommandText = "SELECT * FROM tb_module;";
$DBCmd.ExecuteReader();
$DBConn.Close();
答案 1 :(得分:1)
检查ODBC数据源中是否存在DSN。如果不是,您必须创建一个转到“控制面板”,“管理员”。工具&#39;,&#39;数据源(ODBC)&#39;。然后选择“添加用户DSN&#39; - 选择PostgreSQL驱动程序,并填写您的服务器和数据库详细信息。 要检查的测试连接都可以!
答案 2 :(得分:1)
我发现了问题,我以为安装了Postgresql ODBC驱动程序,但事实并非如此。我找到这个网站后终于开始工作了:http://code.google.com/p/visionmap/wiki/psqlODBC然后我按照上面的说明操作。它有效。
感谢您的帮助。
答案 3 :(得分:1)
如果恰好在客户端上安装了postgresql,则可以使用postgresql随附的psql
$dburl="postgresql://exusername:expw@exhostname:5432/postgres"
$data="select * from extable" | psql --csv $dburl | ConvertFrom-Csv
您必须在路径中包含psql或引用它,例如在C:\ Program Files \ PostgreSQL \ 12 \ bin。应该能够键入“ psql”并在powershell中查看输出。
答案 4 :(得分:0)
在Driver声明后,您的连接字符串中确实存在拼写错误。 有一个双冒号而不是分号:)
错误:{PostgreSQL UNICODE}:服务器
正确:{PostgreSQL UNICODE};服务器