gpt4 book ai didi

sql - 如何将 VBA 连接到 postgreSQL 并运行查询

转载 作者:行者123 更新时间:2023-11-29 11:37:35 25 4
gpt4 key购买 nike

我正在尝试从 Microsoft Excel 应用程序运行查询,但未能成功连接。我在本地机器上安装了 PostgreSQL 9.3,并且正在运行 64 位 Windows 7。我有一个名为 dvdrental 的示例数据库,它是一个演示数据库。我只需要连接到数据库,运行查询,然后在我的工作表(或即时窗口,其中任何一个都可以解决连接问题)中查看输出。这是我目前无法使用的内容。

Option Explicit
Public objConnection As ADODB.Connection
Public strConnection As String

Public Sub TestPostgresConnection()
Dim strConnection As String
strConnection = "Driver={PostgreSQL Unicode};Server=localhost;Port=5432; Database=dvdrental;UID=sa;PWD=wrox;"
Set objConnection = New ADODB.Connection
Set objRecordSet = New ADODB.Recordset
objConnection.Open strConnection
With objRecordSet
.ActiveConnection = objConnection
.Open "SELECT * FROM actor"
End With
Do While Not objRecordSet.EOF
Debug.Print objRecordSet.Fields(0).Value
objRecordSet.MoveNext
Loop
objRecordSet.Close
objConnection.Close
Set objRecordSet = Nothing
Set objConnection = Nothing
End Sub

这是我的引用资料列表;

Visual Basic 应用程序Microsoft Excel 14.0 对象库OLE自动化Microsoft Office 14.0 对象库Microsoft Forms 2.0 对象库Microsoft Access 14.0 对象库微软 ADO 分机。 6.0 用于 DOL 和安全Microsoft ActiveX 数据对象 2.8 库Microsoft Windows Common Confrols 6.0 (SP6)

当我执行此测试方法 TestPostgresConnection 时,我得到“[Miscrosoft][ODBC 驱动程序管理器] 数据源名称未找到且未指定默认驱动程序”

我的 postgres 设置是标准的,我只是按照他们网站上的说明创建本地 RDBMS 进行测试。

谁能告诉我为什么我无法连接和运行查询?到目前为止,所有解决方案都没有奏效。谢谢。

最佳答案

我的回答是笼统的回答。回馈社会。所以要友善。我有一个类似的问题,我使用以下内容进行设置。

注意:我建议使用 DSN 而不是驱动程序,这样您就可以使用已经有密码的命名连接,而不是在您的代码中使用密码。

这些说明通常是一个巨大的帮助: http://www.dashbay.com/2011/03/working-with-postgres-on-windows-via-odbc/

上面链接中的下载链接对我不起作用。我在这里找到了 ODBC 下载: https://www.postgresql.org/ftp/odbc/versions/msi/我想我下载了这个:psqlodbc_09_05_0400-x86.zip

我使用 Konstantin 的回答从此链接获取 %WINDIR%\SysWOW64\odbcad32.exe: PostgresSQL ODBC Drivers on Windows 7 not showing up

我还在这里下载了 MS Power Query,我发现它很有用: https://www.microsoft.com/en-us/download/details.aspx?id=39379

如果我需要添加说明,我很乐意编辑我的答案。

下面是查询的子项,下面是一个演示如何使用它的子项。

Sub CcQueryPg(sSql As String, Optional sOdbcName As String = "ConnectionNameHere")


'Declare a Connection object
Dim cnDB As New ADODB.Connection

'Declare a Recordset Object
Dim rsRecords As New ADODB.Recordset

'Open the ODBC Connection using this statement
cnDB.Open sOdbcName
rsRecords.Open sSql, cnDB

'Close everything and set the references to nothing
rsRecords.Close
Set rsRecords = Nothing
cnDB.Close
Set cnDB = Nothing
End Sub

Sub SendQuery()

Call CcQueryPg("COPY sometablenamehere FROM '/mnt/somepathhere/somefilename.csv' DELIMITER ',' CSV HEADER;")

End Sub

上面的文件引用是针对 Linux 机器上的文件。您的路径格式可能不同。

关于sql - 如何将 VBA 连接到 postgreSQL 并运行查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21895629/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com