Загрузка данных из Excel через VB и ODBC соединение с базой данных PostgreSQL, размещенной на Heroku
У меня есть проблема при попытке загрузить данные из Excel в базу данных PostgreSQL, размещенную на Heroku, через код Visual Basic и соединение ODBC.
Моя версия Excel для 64-разрядной версии 2013 года, я загрузил и установил драйверы psqlODBC (версия 10_02_0000, ANSI(x64) и Unicode(x64)) отсюда: https://www.postgresql.org/ftp/odbc/versions/msi/
Когда я пытаюсь загрузить данные в локальную базу данных PostgreSQL, все работает нормально. Ниже вы можете найти код VB, который я использую:
Sub PostgreSQL_INSERT_public_cities_Click()
Dim strsql As String
Dim db As Database
dbconnect = "ODBC;DRIVER=PostgreSQL ANSI(x64);UID=myuser;PWD=mypwd;PORT=5432;SERVER=localhost;DATABASE=mydb;DSN=C:\Program Files\psqlODBC\1002\bin\psqlodbc30a.dll"
Set db = OpenDatabase("", False, False, dbconnect)
strsql = ActiveSheet.Range("F16").Value
db.Execute strsql, dbSQLPassThrough
End Sub
Когда вместо этого я пытаюсь загрузить те же данные в базу данных PostgreSQL, размещенную на Heroku, я получаю следующее сообщение об ошибке:
Код VB, который я использую в этом случае:
Sub PostgreSQL_INSERT_public_cities_heroku_Click()
Dim strsql As String
Dim db As Database
dbconnect = "ODBC;DRIVER=PostgreSQL ANSI(x64);SERVER=ec2-xx-xxx-xx-6.compute-1.amazonaws.com;PORT=5432;DATABASE=herokudb;UID=herokuuser;PWD=herokuverylongpassword;DSN=C:\Program Files\psqlODBC\1002\bin\psqlodbc30a.dll"
Set db = OpenDatabase("", False, False, dbconnect)
strsql = ActiveSheet.Range("F16").Value
db.Execute strsql, dbSQLPassThrough
End Sub
Я прочитал, что мне нужно подключиться к Heroku с помощью SSL, хотя sslmode
в psqlODBC должен быть включен по умолчанию, я пытался добавить sslmode=require
на мой код VB, в dbconnect
строка, но когда я это делаю, я получаю следующее сообщение об ошибке:
С другой стороны, если я пытаюсь загрузить в базу данных PostgreSQL, размещенную на Heroku, данные в CSV-файле через pgfutter, все работает хорошо. Код, который я использую:
pgfutter --host "ec2-xx-xxx-xx-x.compute-1.amazonaws.com" --port "5432" --db "herokudb" --schema "public" --table "foundation" --user "herokuuser" --pw "herokuverylongpassword" --ssl csv _1_foundation_csv.csv
Любой совет будет чрезвычайно полезным.
Спасибо Стефано