如何将环境变量传递到 .sql 文件中?

Sam*_*817 8 postgresql environment-variables docker

我在 Dockerfile 中设置环境变量,我想在 .sql 文件中引用它。该文件在/docker-entrypoint-initdb.d因为initdb将运行它。

如何传递环境变量?(例如SELECT * FROM $myEnvironmentVariableHere;

Jer*_*emy 4

有几种方法可以做到这一点,但最简单的可能是使用带有 HEREDOC 的简单 shell 脚本:

这是脚本,在scripts/test.sh中调用

#!/bin/bash

psql << EOF
SELECT * FROM $MYVAR LIMIT 1;
EOF
Run Code Online (Sandbox Code Playgroud)

运行方法如下:

#!/bin/bash

psql << EOF
SELECT * FROM $MYVAR LIMIT 1;
EOF
Run Code Online (Sandbox Code Playgroud)

在各种启动消息中,您将看到以下几行:

/usr/local/bin/docker-entrypoint.sh: sourcing /docker-entrypoint-initdb.d/test.sh
   relname    | relnamespace | reltype | reloftype | relowner | relam | relfilenode | reltablespace | relpages | reltuples | relallvisible | reltoastrelid | relhasindex | relisshared | relpersistence | relkind | relnatts | relchecks | relhasoids | relhasrules | relhastriggers | relhassubclass | relrowsecurity | relforcerowsecurity | relispopulated | relreplident | relispartition | relrewrite | relfrozenxid | relminmxid |           relacl            | reloptions | relpartbound
--------------+--------------+---------+-----------+----------+-------+-------------+---------------+----------+-----------+---------------+---------------+-------------+-------------+----------------+---------+----------+-----------+------------+-------------+----------------+----------------+----------------+---------------------+----------------+--------------+----------------+------------+--------------+------------+-----------------------------+------------+--------------
 pg_statistic |           11 |   11319 |         0 |       10 |     0 |        2619 |             0 |       16 |       398 |            16 |          2840 | t           | f           | p              | r       |       26 |         0 | f          | f           | f              | f              | f              | f                   | t              | n            | f              |          0 |          562 |          1 | {postgres=arwdDxt/postgres} |            |
(1 row)
Run Code Online (Sandbox Code Playgroud)

  • 我想从容器内部运行 .sql 文件(例如 `psql -U user -d database -a -f file.sql`) (2认同)