在开发Shiny应用时,常见的挑战之一是如何有效地从数据库中动态获取数据。尤其是当用户的输入需要动态地插入到SQL查询中时,问题就会变得复杂。本文将通过一个实例,展示如何在Shiny应用中实现与PostgreSQL数据库的无缝对接,并解决动态查询的问题。
背景
假设我们正在开发一个Shiny应用,用户可以从下拉列表中选择一种物种,然后应用程序会显示该物种的分布范围。由于物种分布范围的数据量大且复杂,我们选择将这些数据存储在PostgreSQL数据库中。
问题描述
在Shiny应用中,我们需要根据用户选择的物种ID(sp_id)动态构建SQL查询语句,并从数据库中获取相应的分布数据。然而,直接将用户输入嵌入SQL查询中会导致语法错误,例如:
SELECT*FROMrangeWHEREsp_id={input$species_choice}这种方法在dbGetQuery中可以正常工作,但在使用st_read时却出现了错误。