psql -i 脚本执行

参考:linux psql  http://linux.51yip.com/search/psql

最近自验升级脚本时用到了psql -i的命令,

将sql脚本用filezilla上传到/home/web 路径下

然后登陆pt数据库:su - pt
        password
        pt@Web:/> psql -U web -d pt
        pt=>
用\i 执行: \i /home/web/.InsertTable_Kpi.sql;

看了一个相关资料,很全面,这里截取两个,具体参考原文。

psql --  PostgreSQL 交互终端

用法:
psql [option...] [dbname [username]]

描述:
psql 是一个以终端为基础的 PostgreSQL 前端。它允许你交互地键入查询,把它们发出给 PostgreSQL, 然后看看查询的结果。另外,输入可以来自一个文件。
还有, 它提供了一些元命令和多种类 shell 地特性来实现书写脚本以及对大量任务的自动化。

参数:

-a
--echo-all
    在读取行时向标准输出打印所有内容。 这个选项在脚本处理时比交互模式时更有用。这个选项等效于设置变量 ECHO 为 all。 

\i filename
    从文件filename中读取并把其内容当作从键盘输入的那样执行查询。
    注意: 如果你想在屏幕上看到读入的行,你必须对所有行设置变量 ECHO 为 all。 

脚本: #!/bin/bash # Nominatim 自动化部署脚本 (root用户版) set -e # 配置参数 NOMINATIM_DIR="/opt/nominatim" POSTGRES_USER="nominatim_admin" POSTGRES_PASSWORD=$(openssl rand -base64 16) OSM_DATA_URL="https://download.geofabrik.de/europe/monaco-latest.osm.pbf" API_PORT=8080 echo ">>> 正在安装系统依赖..." apt update && apt install -y \ build-essential cmake libboost-dev libexpat1-dev \ zlib1g-dev libxml2-dev libbz2-dev libpq-dev libproj-dev \ postgresql postgresql-contrib postgis postgresql-14-postgis-3 \ apache2 php php-pgsql python3-dotenv python3-psycopg2 python3-requests echo ">>> 配置 PostgreSQL..." sudo -u postgres psql -c "CREATE USER $ POSTGRES_USER WITH PASSWORD '$ POSTGRES_PASSWORD' SUPERUSER;" sudo -u postgres createdb -O $ POSTGRES_USER nominatim sudo -u postgres psql -d nominatim -c "CREATE EXTENSION postgis;" sudo -u postgres psql -d nominatim -c "CREATE EXTENSION hstore;" # 优化 PostgreSQL 配置 cat <<EOF > /etc/postgresql/14/main/conf.d/nominatim.conf shared_buffers = 2GB work_mem = 128MB maintenance_work_mem = 2GB effective_cache_size = 4GB EOF systemctl restart postgresql echo ">>> 编译安装 Nominatim..." mkdir -p $ NOMINATIM_DIR cd $ NOMINATIM_DIR git clone --depth 1 https://github.com/osm-search/Nominatim.git cd Nominatim mkdir build && cd build cmake -DCMAKE_BUILD_TYPE=Release .. make -j$(nproc) echo ">>> 下载并导入 OSM 数据..." wget $ OSM_DATA_URL -O data.osm.pbf ./utils/setup.php --osm-file data.osm.pbf --all \ --osm2pgsql-cache 2000 \ --threads $(nproc) \ --reverse-only echo ">>> 配置 Apache 服务..." cat <<EOF > /etc/apache2/sites-available/nominatim.conf <VirtualHost *:$ API_PORT> DocumentRoot $ NOMINATIM_DIR/Nominatim/build/website <Directory "$ NOMINATIM_DIR/Nominatim/build/website"> Require all granted AddType text/html .php </Directory> <Files ".php"> SetHandler application/x-httpd-php </Files> </VirtualHost> EOF a2dissite 000-default a2ensite nominatim sed -i "s/Listen 80/Listen $ API_PORT/" /etc/apache2/ports.conf systemctl restart apache2 echo ">>> 安全加固..." # 限制数据库权限 sudo -u postgres psql -c "ALTER USER $ POSTGRES_USER NOSUPERUSER;" chmod 750 $ NOMINATIM_DIR echo ">>> 验证部署..." curl -s "http://localhost:$ API_PORT/search.php?q=Monaco&format=json" | jq . cat <<EOF =============================== Nominatim 部署成功! 访问地址: http://服务器IP:$ API_PORT/search?q=<地址> 数据库用户: $ POSTGRES_USER 数据库密码: $ POSTGRES_PASSWORD 安装目录: $ NOMINATIM_DIR =============================== EOF 在运行后还需要输入参数吗?
最新发布
07-11
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值