postgresql 将文件装载到Quarkus Dev Services for Database

p8h8hvxi  于 2023-06-05  发布在  PostgreSQL
关注(0)|答案(2)|浏览(163)

我正在使用quarkus和DevServices来启动一个postgresql数据库。我想用一个csv文件初始化这个数据库。为此,我想将一个csv文件挂载到由DevServices启动的postgresql容器中,这样我就可以使用“COPY...”初始化我的数据库。初始化脚本中的“FROM”。
我遵循quarkus数据库开发服务文档:
我尝试在应用程序属性中将以下内容添加到my project

quarkus.datasource.devservices.volumes."/resources/init/"=/container/resources/

quarkus.datasource.devservices.volumes."src/main/resources/init/"=/container/resources/

问题是我的csv文件没有正确挂载:路径/container/resources位于postgres容器中,但resources文件夹为空。它应该包含csv文件titanic. csv。
我需要提供什么路径?

eiee3dmh

eiee3dmh1#

您需要提供资源所在的绝对路径。但是,由于您希望绑定已经在类路径中的资源,因此可以用途:

quarkus.datasource.devservices.volumes."classpath:./init"=/container/resources

其中“.”代表路径“src/test/resources”(如果存在)或“src/main/resources”。
我希望它有帮助!

mm5n2pyu

mm5n2pyu2#

文档中的示例很好地解释了这一点,我认为:

# Using a filesystem volume:
quarkus.datasource.devservices.volumes."/path/from"=/container/to 
# Using a classpath volume:
quarkus.datasource.devservices.volumes."classpath:./file"=/container/to

你的尝试是错误的,原因有几个:
1.您的文件位于应用程序资源中,因此可以在类路径中使用,因此您可能应该使用classpath:变体,而不是您正在使用的文件系统变体。
1.您的第一次尝试使用"/resources/init/",这是一个绝对路径,可能不匹配任何东西(除非您在文件系统的根目录下有一个resources目录,并且其中有一个init目录,但我对此表示怀疑)。
1.第二次尝试使用src/main/resources/init/,假设路径是相对于项目的根目录的,但我怀疑它们是相对的。它们更可能是相对于您启动应用程序的任何目录(在使用Maven进行测试的情况下,可能是./target)。
如果是你我会试试这个吗

quarkus.datasource.devservices.volumes."classpath:./init/"=/container/resources/

相关问题