如何通过VBA从MS Access查询ODBC Amazon Redshift数据库
从Redshift导入数据到MS Access的实现思路与方向
核心方向1:利用ODBC驱动直接连接(最常用)
- 步骤框架:
- 安装官方的Amazon Redshift ODBC驱动,确保和你的Access位数(32/64位)完全匹配。
- 在Windows「ODBC数据源管理器」中配置Redshift的系统DSN,填入集群端点、端口、数据库名、用户名和密码完成连接验证。
- 在Access中操作:
- 若你已有现成的Redshift查询,优先用SQL传递查询(Pass-Through Query):新建查询切换到SQL视图,直接写入你的Redshift原生查询,设置查询的ODBC连接为已配置的DSN。执行后可将结果保存为Access本地表——这种方式让Redshift端执行复杂的跨表/跨模式逻辑,仅返回最终结果,效率远高于Access本地处理。
- 也可选择「外部数据」>「ODBC数据库」,直接导入指定表或创建链接表。
- 注意点:确保Redshift账号拥有目标表/模式的
SELECT权限,否则会出现权限报错。
核心方向2:通过中间文件中转(适合自动化或复杂场景)
- 思路:用脚本先从Redshift拉取数据,导出为Access兼容格式后再导入:
- 用Python的
psycopg2库或PowerShell的Redshift模块连接集群,执行你已编写的查询,将结果导出为CSV(推荐)或Excel文件。 - 在Access中通过「外部数据」菜单导入生成的文件;也可编写Access VBA脚本,调用外部程序自动完成拉取+导入的全流程。
- 用Python的
- 优势:适合需要定时同步、数据量较大需分批导出,或者导入前需做自定义数据清洗的场景。
核心方向3:Access链接表+本地查询整合
- 步骤:
- 将Redshift中需要的表(跨模式需指定完整表名,如
schema_name.table_name)通过ODBC链接到Access。 - 在Access中创建本地查询,基于链接表编写关联、筛选等逻辑,最后将查询结果转换为Access本地表。
- 将Redshift中需要的表(跨模式需指定完整表名,如
- 注意点:链接表是实时读取Redshift数据,大数据量下查询性能会很差,仅适合小数据集场景。
关键注意事项
- 位数一致性:Redshift ODBC驱动、ODBC数据源管理器、Access三者的位数必须统一(全32位或全64位),否则会出现连接失败。
- 数据量控制:单次导入数据量超过10万条时,建议在Redshift查询中用
LIMIT+OFFSET或按时间分段分批拉取,避免Access内存溢出。 - 字符编码:导出数据时使用UTF-8编码,导入Access时选择对应编码,避免中文乱码。
内容的提问来源于stack exchange,提问作者Max
相关产品推荐
相关产品推荐

