bne*_*lon 5 postgresql unicode excel odbc ansi
我正在尝试通过 PostgreSQL ODBC 32 位驱动程序从 Excel 连接到 PostgreSQL 数据库表。
在 Excel 中,我转到数据>获取数据>从其他来源>从 ODBC。我导航到我设置的 ODBC 数据源,输入凭据,并在可用表出现时清楚地连接。当我点击“加载”并给出错误时,预览失败并且查询失败:
DataSource.Error: ODBC: ERROR [HY000] Error while executing the query
Details:
DataSourceKind=Odbc
DataSourcePath=dsn=PostgreSQL
OdbcErrors=Table
Run Code Online (Sandbox Code Playgroud)
当我在 ODBC admin 中测试连接时,它成功了。我已经尝试了 ANSI 和 Unicode 驱动程序。TIBCO Spotfire 连接到 ODBC 数据源并提取数据就好了。
您能提供的任何帮助将不胜感激。
这似乎是最新 psqlODBC 驱动程序的一个错误,在我撰写本文时该驱动程序为psqlodbc_09_06_0500 。我可以访问我的 PostgreSQL 服务器日志。这是错误消息和有问题的查询:
错误:字符 553 处或附近的“ta”处存在语法错误 语句:从 pg_catalog.pg_attribute ta、pg_catalog.pg_attribute ia、pg_catalog.pg_class tc、pg_catalog.pg_index i、pg_catalog.pg_namespace n、pg_catalog 中选择 ta.attname、ia.attnum、ic.relname、n.nspname、tc.relname。 pg_class ic 其中 tc.relname = 'rates' AND n.nspname = 'public' AND tc.oid = i.indrelid AND n.oid = tc.relnamespace AND i.indisprimary = 't' AND ia.attrelid = i.indexrelid AND ta.attrelid = i.indrelid AND ta.attnum = i.indkey[ia.attnum-1] AND (NOT ta.attisdropped) AND (NOT ia.attisdropped) AND ic.oid = i.indexrelid 按 ia.attnumselect 排序ta.attname、ia.attnum、ic.relname、n.nspname、来自 pg_catalog.pg_attribute 的 NULL ta、pg_catalog.pg_attribute ia、pg_catalog.pg_class ic、pg_catalog.pg_index i、pg_catalog.pg_namespace n 其中 ic.relname = 'rates_pkey' AND n.nspname = 'public' ANDic.oid = i.indexrelid AND n.oid = ic.relnamespace AND ia.attrelid = i.indexrelid AND ta.attrelid = i.indrelid AND ta.attnum = i.indkey[ia. attnum-1] AND(不是 ta.attisdropped)并且(不是 ia.attisdropped)按 ia.attnum 排序
以下是字符 553 的上下文:order by ia.attnumselect ta.attname, ia.attnum。请注意,两个字段名称之间缺少逗号。
我能够让它与psqlodbc_09_06_0200一起工作,它已经有大约一年的历史了。由于听起来您使用的是 32 位 Office,因此您可以从https://www.postgresql.org/ftp/odbc/versions/msi/下载psqlodbc_09_06_0200-x86.zip。(如果安装了 64 位 Office,请使用 x64。)
您可以尝试psqlodbc_09_06_0200-x86.zip和psqlodbc_09_06_0500-x86.zip之间的驱动程序版本,因为该错误可能是在这两个版本之间的某个位置引入的。
| 归档时间: |
|
| 查看次数: |
3732 次 |
| 最近记录: |