Postgres のインストールと操作に関する注意事項

目次

1. 文書の説明... 1

2. オペレーティング システムのバージョンのクエリと yum ソースの構成... 1

>サーバー... 1

>クライアント... 2

3. PostgreSQL の確認とアンインストール... 3

1) PostgreSQL チェック... 3

2) Postgresql のアンインストール... 3

四、PostgreSQL10 Yumのインストールとデプロイ… 4

5、データベースを起動してテストします... 6

6、仮想マシンのネットワークを構成します... 7

7. Python のインストール... 12

8、リモート アクセス サーバー データベース サービス... 13

九、PostgreSQL11ソースコードのインストールとデプロイ… 14

10. Windows に PostgreSQL13.17 をインストールする

十一、POSTGRES マスタースレーブデータ同期・・・19

12. POSTGRES 自動インストールスクリプト... 19

十三、POSTGRESの操作とメンテナンスの注意事項... 19

1. PG データ テーブルのエクスポートとインポート... 19

2. 特定の ID を持つテーブルを削除します... 20

3. PG データをコピーする... 20

4. PG に空のテーブルがあるかどうかを確認します... 21

5. PG はデータ テーブルを GreenPlum にインポートします... 22

6. 新しいデータベース ユーザー... 22

7. データ テーブルの所有者を変更する... 24

1. 文書の説明

   オペレーティング システムを使用して、CentOS7 の仮想マシンにデータベース PostgreSQL をインストールおよびデプロイし、データベース サーバーとして PostgreSQL を起動および初期化してから、Ubuntu16 のオペレーティング システムを使用する別の仮想マシンをクライアントとして使用して、サーバーのデータベース サービスにアクセスします。パイソン。

2. オペレーティング システムのバージョンのクエリと yum ソースの構成

 >サーバー

1) オペレーティング システムのバージョンとネットワーク アドレスのクエリ

2) yum ソース配布

1. 仮想マシン設定で CD/DVD を選択し、ISO イメージ ファイルを使用します。

下の図に示すように、システムの起動後に CD-ROM デバイスが自動的にマウントされます。システムのバージョンが光学ドライブ デバイスの自動マウントをサポートしていない場合は、手動でマウントする必要があります。

① CD-ROM ファイルを探す: /dev/cdrom

注: このシステムはソフト接続を行っているため、/dev/cdrom と /dev/sr0 で使用される CD-ROM ファイルは一貫しています。

②CD-ROMのマウントフォルダを作成:mkdir /mnt/centos

③ビルドしたCD-ROMフォルダにCD-ROMファイルをマウント: mount /dev/cdrom /mnt/centos

 2. ローカル コピーをコピーして、CentOS7 イメージ ファイルを保持し、ローカル yum ソースを構成します。

 [root@hadoop1 ~]# mkdir /mnt/centos7

[root@hadoop1~]# cd /run/media/june/CentOS\7\x86_64/

[root@hadoop1 ~]# cp -r * /mnt/centos7/

[root@hadoop1 ~]# cd /etc/yum.repos.d/

[root@hadoop1 ~]# touch CentOS-Local.repo

/etc/yum.repos.d/ ディレクトリに新しいファイル CentOS-Local.repo を作成し、次のように構成します。baseurl は、ローカルに予約されたミラー ファイルのアドレスです。enabled=1 は、yum ソースを有効にすることを意味します。

[root@hadoop1 ~]# yum list パッケージ一覧を見る

注: yum ヘルプを使用して yum コマンドとパラメーター設定を学習します。すべてのインストール ログは、/etc/yum.conf で指定された logfile=/var/log/yum.log ファイルに保持されます。

>クライアント

オペレーティング システムのバージョンとネットワーク アドレスのクエリ

    

3. PostgreSQL のチェックとアンインストール

1) PostgreSQLチェック

システムで使用されている Postgresql サーバーの現在のバージョンは、psql のバージョンと一致していません。下の図に示すように、Postgresql サーバーはバージョン 9.5 を使用していますが、システムのデフォルトは psql のバージョン 9.2 です。

この問題の解決策は次のとおりです。

① find / -name psql を使用して、システム内のすべての psql バージョンの構成パスを見つけます。

② 現在の psql の名前を psql9.2 に変更し、ソフト接続を確立して、現在の psql 構成パスが pgsql-9.5 に対応する psql を指すようにします。

③ psql のバージョンと postgres サービスを再度確認すると、図に示すように、psql のバージョンは postgresql サーバーのバージョンと一致しています。

 

2) Postgresqlのアンインストール

   ①postgresql関連のソフトウェアパッケージを全て削除 yum remove postgre*、postgresql9.5版、postgresql9.2版含め、削除したソフトウェアパッケージの情報をログ/var/log/yum.logに書き込みます

②該当するディレクトリファイルを削除し、ディレクトリファイル /usr/pgsql* とデータディレクトリファイル var/lib/psql をインストール

   

   ③postgresql関連のユーザーグループとユーザーを削除

      

四、PostgreSQL10 Yumのインストールとデプロイ

1)  PostgreSQL へのログイン: Linux ダウンロード (Red Hat ファミリー)

2) PostgreSQL バージョンを 10、プラットフォーム オペレーティング システムを CentOS7、x86 アーキテクチャを 64 ビットとして選択し、公式 Web サイトに従って、最新のシステム ウェアハウス RPM パッケージ、クライアント ソフトウェア パッケージ、およびサーバー ソフトウェア パッケージをインストールします。

[root@hadoop1 ~]# yum install /pub/repos/yum/ のインデックス

                         reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm

[root@hadoop1 ~]# yum install postgresql10

[root@hadoop1 ~]# yum install postgresql10-server

インストールが完了すると、現在のバージョンが PostgreSQL10.11 として表示されます。

3) データベースの初期化

データベースの初期化により、/var/lib/pgsql ディレクトリに 10 という名前のフォルダーが作成されます。10 はデータベースのバージョン番号で、このフォルダーにはデータ フォルダーがあります。デフォルトでは、postgres という名前のシステム ユーザーが作成されます。 passwd コマンドを通過する パスワードを変更する

4) ブートを自動的に開始するように設定する

[root@hadoop1 ~]# systemctl enable postgresql-10.service

5) データベース サービスを開始し、データベース サービスを表示する

[root@hadoop1 ~]# systemctl start postgresql-10.service

[root@hadoop1 ~]# systemctl status postgresql-10.service

6) データベース サービスのプロセスとポートを確認する

ps -ef | grep postgres

netstat -anp | つかむ 5432

5. データベースを起動してテストする

1) リモート アクセスを有効にする

vi /var/lib/pgsql/10/data/postgresql.conf

#listen_addresses = 'localhost' を listen_addresses='*' に変更します。

     もちろん、ここの「*」は、開きたい任意のサーバー IP に変更することもできます

2) リモート接続を信頼する

vi /var/lib/pgsql/10/data/pg_hba.conf

IPv4 ローカル接続アドレス 127.0.0.1/32 を 0.0.0.0/0 に変更し、対応する接続​​方法を md5 認証方法に変更します

3) ファイアウォールを開く

 CentOS ファイアウォールには PostgreSQL サービスが組み込まれています. /usr/lib/firewalld/services/postgresql.xml 設定ファイルによると, ファイアウォール ポート 5432/tcp を開いて postgres サービスを開く必要があります. 実行は次のとおりです. :

systemctl ステータス firewalld

firewall-cmd --permanent --add-port=5432/tcp

firewall-cmd --reload ファイアウォールのリロード

firewall-cmd --list-all ファイアウォールを表示

4) PostgreSQL サービスを再起動します。

systemctl restart postgresql-10.service

5) デフォルトの postgres データベースに接続し、postgres という名前のユーザーのパスワードを変更します。

6) データベースの作成とテスト

最初に新しいユーザー shu を作成してスーパーユーザー権限を付与し、そのパスワードを変更してから、データベース shudb を作成して shu がデータベースを操作できるようにします。

ユーザー shu がデータベース shudb にログインし、mytable テーブルを作成して、基本的な SQL 関数をテストします。

6 番目に、仮想マシン ネットワークを構成します。

1) CentOS および Ubuntu 仮想マシンのネットワーク接続モードがブリッジ モードに設定されている

まず、データベースサーバーである仮想マシン CentOS7 とデータベースクライアントである仮想マシン Ubuntu16 の両方がブリッジングネットワーク接続方式を使用する必要があります.仮想マシンを起動する前に、仮想マシンを選択します--設定--ネットワークアダプター--ネットワーク接続を確認し、ブリッジ モードを確認して、仮想マシンを起動します。

仮想マシンの 3 つのネットワーク接続モードの違い: (私の理解は正確ではないかもしれません ~)

①ブリッジモード: 物理ネットワークに直接接続し、仮想マシン ネットワークはホスト ネットワークと同じネットワーク セグメントの IP アドレス ( 192.168.124.7/24 ) を使用し、独自の IP アドレスを使用して外部ネットワークにアクセスします。

②NATモード:ホストのIPアドレスを共有するために使用され、仮想マシンのネットワークはホストネットワークのサブネットIPアドレスを使用し、外部ネットワークにアクセスできますが、ホストのIPアドレスを介して外部ネットワークにアクセスできます

③ホストオンリーモード:ホストと共有する専用ネットワークで、外部ネットワークにはアクセスできない

 

 Win7 ホスト ネットワーク: IPv4 192.168.124.7/24

>サーバー

CentOS7.4 ネットワーク: IPv4 192.168.124.49/24

   >クライアント

Ubuntu16.4 ネットワーク: IPv4 192.168.124.50/24

2) データベース サーバーとしての CentOS ネットワークを静的ネットワーク アドレスに変更します。

最初にネットワーク カード ens33 を切断し、構成ファイル ifcfg-ens33 を変更し、変更した内容を保存してから、ネットワーク カード ens33 を接続し、最後にネットワークを再起動します。

 

注: ネットワークを再起動するコマンドは、サービス ネットワークの再起動を使用することをお勧めします

現在、ネットワーク カード ens33 の構成ファイルを使用しています: /etc/sysconfig/network-scripts/ifcfg-ens33

元の動的 IP 構成は次のとおりです。

静的 IP に変更した後の構成は次のとおりです。

 

3) テストネットワーク

Baidu ホームページの IP 180.101.49.12 などの外部ネットワークに ping を実行しますが、yum install postgresql10-devel を実行してエラーを報告します。

yum ソース構成が正しいことを確認した後、yum キャッシュを消去し、メタデータ キャッシュを再作成します yum clean all

Yum makecache、次のようにエラーを報告し続けます

ネチズンの提案に従ってファイル /etc/resolv.conf を変更し、2 つのドメイン ネーム サービス アドレスを追加し、現在ネットワーク カード ens33 を使用している構成ファイルにアドレスを追加します。

[root@hadoop1 ~]# vi /etc/resolv.conf

[root@hadoop1 ~]# ifdown ens33

[root@hadoop1 ~]# vi /etc/sysconfig/network-scripts/ifcfg-ens33

[root@hadoop1 ~]# ifup ens33

[root@hadoop1 ~]# サービス ネットワークの再起動

/etc/sysconfig/network-scripts/ifcfg-ens33 の最新の設定情報は以下の通りで、DNS1=8.8.8.8 と DNS2=8.8.4.4 を追加

最後に、次の yum コマンドは、エラーを表示することなく正しく実行できます。

postgresql10-contrib と postgresql10-devel をインストールすることをお勧めします

yum makecache

yum インストール postgresql10-contrib

yum インストール postgresql10-devel

7. Python のインストール

1) CentOS7 に Python 2.7.5 をインストールします。

①インストールパッケージを入手する

仮想マシンのネットワークはブリッジモードを採用しているため、curl コマンドや wget コマンドを直接使用して、setuptools や pip インストール パッケージなどの外部ネットワーク リソースを取得できます。ローカルにインストール パッケージがある場合は、ftp や filezilla などのファイル転送ツールを使用してアップロードできます. 図 pip-1.5.4.tar.gz に示すように、tar.gz タイプのインストール パッケージを使用することをお勧めします。および setuptools-2.0.tar.gz

  ②セットアップツールのインストール

  [root@hadoop1 opt]# sudo tar -zxvf setuptools-2.0.tar.gz -C /opt

[root@hadoop1 opt]# cd setuptools-2.0/

[root@hadoop1 opt]# python setup.py ビルド

[root@hadoop1 opt]# python setup.py インストール

  ③pipをインストール

  [root@hadoop1 opt]# tar -xzvf pip-1.5.4.tar.gz –C /opt

[root@hadoop1 opt]# cd pip-1.5.4

[root@hadoop1 opt]# python setup.py インストール

[root@hadoop1 opt]# python -V

パイソン 2.7.5

④ postgreSQL データベースへのアクセスに必要な psycopg2 など、必要な python パッケージをインストールします。

[root@hadoop1 pip-1.5.4]#pip install psycopg2

[root@hadoop1 pip-1.5.4]# find / -name psycopg2

/usr/lib64/python2.7/site-packages/psycopg2

2) Ubuntu 16 に Python 2.7.5 をインストールします。

root@ubuntu:~# sudo apt-get install python

root@ubuntu:~# sudo apt-get install libpq-dev python-dev

root@ubuntu:~# sudo apt-get install python-pip

root@ubuntu:~# pip install psycopg2

8、リモート アクセス サーバー データベース サービス

1) Ubuntu 仮想マシン リモート アクセス データベース サービス

データベースに接続するためのサーバー上の python スクリプトをクライアントにアップロードし、アップロードが成功したらスクリプトのホスト アドレスを変更し、ローカル アクセス時に設定された 127.0.0.1 をサーバー側の仮想マシン アドレス 192.168 に変更します。 124.49

root@ubuntu:~# scp [email protected]:/opt/postgresqlConnect.py /opt/

root@ubuntu:~# vi /opt/postgresqlConnect.py

Python は psycopg2 のインストール後にデータベース アクセス スクリプトを実行し、リモート データベース サービスを正常に取得できます。

2) ホストは PostgreSQL データベース サービスにリモート アクセスします。

図に示すように、サーバー上の postgres サービスが有効になっており、ホストが Navicat を介してサーバー上のデータベース サービスに正常にリモート アクセスしていることを確認します。

 

9. PostgreSQL11 ソースコードのインストールとデプロイ

ソース コードを使用して PG11.5 をインストールする

postgresql ソースコードのインストール - monkey6 - 博客园

 

依存関係をインストールする

yum install -y perl -ExtUtils-Embed readline-devel zlib-devel pam-devel libxml2-devel libxslt-devel openldap-devel python-devel gcc -c++ openssl-devel cmake

インストール構成

./configure --prefix=/usr/local/pgsql-11.5 --with-wal-segsize=512 --with-wal-blocksize=16 --with-pgport=5432 --with-segsize=1 --with -blocksize=8 --with-libedit-preferred --with-perl --with-openssl --with-libxml --with-libxslt --enable-thread-safety --enable-nls=en_US.UTF-8

コンパイルする

インストールする インストールする

[root@node7 opt]# useradd postgres

[root@node7 opt]# mkdir pgdata

[root@node7 opt]# chown -R postgres:postgres pgdata/

[ root@node7 local ]# ln -sf /usr/local/pgsql-11.5/ /usr/local/pgsql

[root@node7 ローカル]# su - postgres

[postgres@node7 ~]$ . ~/.bashrc

エクスポート PGDATA=/opt/pgdata

エクスポート PGHOME=/usr/local/pgsql

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$PGHOME/lib

export PATH=$PATH:$PGHOME/bin

[postgres@node7 ~]$ initdb

[postgres@node7 ~]$ pg_ctl -D /opt/pgdata -l ログファイル開始

サーバーが起動するのを待っています....完了

サーバーが起動しました

PostgreSQLデータベースはデータベースの管理者として postgres ユーザーを作成します。パスワードはランダムなので、パスワードを変更する必要があります。方法は次のとおりです。

10. Windows に PostgreSQL13 をインストールする

1. pg をダウンロードしてインストールする

PostgreSQL ダウンロード pgをダウンロード

PostgreSQL10.5インストール詳細手順(Win10)_DrugAIのブログ - CSDN blog_postgresql win10インストール pg

2. 環境変数を設定する

PG_HOME D:\BASKET\ postgresql13

PGD​​ATA %PG_HOME%\data

パス %PG_HOME%\bin

3. Windows サービスの登録

pg_ctl.exe register -N "postgres" -D "D:\BASKET\postgresql-13.0.1\data"

システム サービスの削除

sc 削除サービス名

再登録します。正しいインストールが成功すると、pg サービスがシステム サービスに自動的に登録されます。

pg_ctl.exe register -N "postgres" -D "D:\BASKET\postgresql13\data" -実行する必要はありません

4. navicat 接続 pg データベース テスト

データベース: postgres

ユーザー名: postgres

パスワード: postgres

5.pgAdmin

 十一、POSTGRES マスタースレーブデータ同期

ドキュメントを参照してください: http://t.csdn.cn/EL6mP

12. POSTGRES 自動インストールスクリプト

###采用源码包安装postgres###
############################
#!/bin/bash

if [ $(id -u) != "0" ]; then
    echo "Error: You must be root to run this script, please use root to install"
    exit 1
fi

echo "Please download the version of postgres from https://www.postgresql.org/ftp/source/"
## Update below messages about where you get the package and where you want to install
dir_package='/md5'
install_package=${dir_package}'/postgresql-11.5.tar.gz'
package_version='postgresql-11.5'
## create user mysql and paths /md5/postgres and /md5/postgres/pgdata
useradd postgres
mkdir -p /md5/postgres
mkdir -p /md5/postgres/pgdata
pg_home='/md5/postgres'
pg_data='/md5/postgres/pgdata'

## The default linux system version is Redhat/CentOS7
clear
echo "=========================================================================="
echo "A tool to auto-compile & install $package_version on Redhat/CentOS7 Linux "
echo "=========================================================================="


## 1. preparations for postgres installation
echo ">>Step1: postgres安装准备中..."
echo ">>Step1-1: install the packages depeneded on"
##如果没有root权限,可以跳过以下依赖包的安装,如果后续安装报错再手动添加相关依赖包
##yum install -y perl-ExtUtils-Embed readline-devel zlib-devel pam-devel libxml2-devel libxslt-devel openldap-devel  python-devel gcc-c++ openssl-devel cmake

echo ">>Step1-2: decompress the install package"
package_tar_name=${install_package##*/}
package_name=${package_tar_name%%.tar*}
## decompress the install package
tar zxvf $package_tar_name -C ${dir_package}/


## assign the port for postgres installation 
read -p "Tell me a viable port you'd like to install postgres (the default port is 5432):" port
if [ ! ${port} ];then
  mport=5432
elif [ !`${port} -eq 5432` ];then
  mport=${port}
fi
echo "The port="${mport}

## 2. start postgres installation
echo ">>Step2: 开始安装$package_version"
echo "We are about to install $package_version, please wait..."
echo ">>Step2-1: 配置(--prefix——指定安装目录,--with-pgport——指定启动端口)"
cd ${dir_package}/${package_name}/
./configure --prefix=${pg_home} --with-pgport=${mport}
echo ">>Step2-2: 编译与安装"
make && make install

## 3. initial and start postgres
echo ">>Step3: postgres的初始化与启动"
chown -R postgres:postgres ${pg_home}
echo ">>Step3-1: postgres初始化"
su - postgres -s /bin/bash -c "${pg_home}/bin/initdb -D ${pg_data}"
echo ">>Step3-2: 启动postgres"
su - postgres -s /bin/bash -c "${pg_home}/bin/pg_ctl -D ${pg_data} -l logfile start"
if [ `ps -ef | grep postgres | grep -v grep | wc -l` -eq 0 ]
   then
      echo "Postgres started failed"
   else
      echo "Postgres started successfully"
fi

## 4. 设置环境变量使用psql连接数据库
## echo `export PGHOME=${pg_home}` >> /home/postgres/.bashrc
## echo `export PGDATA=${pg_data}` >> /home/postgres/.bashrc
## echo `export PATH=$PATH:${PGHOME}/bin` >> /home/postgres/.bashrc
## source /home/postgres/.bashrc

## su - postgres
## psql --help
## psql -h localhost -U postgres
## postgres=# alter user postgres with password 'postgres';
## postgres=# \q

## 5. 打开防火墙端口
##  systemctl status firewalld
##  firewall-cmd --permanent --add-port=5432/tcp
##  firewall-cmd --reload 重载防火墙
##  firewall-cmd --list-all 查看防火墙

##6. pg扩展插件安装
##cd  ${dir_package}/${package_version}/contrib/
##make && make install
##安装完成后可以在${pg_home}/share/extension/ 目录下查看到

##7. 修改pg用户密码  —— 即使设置了密码,选择带密码的连接方式时不输入或者输错密码也可以正常连接上的,这个为啥?
##[postgres@centos7-min7 contrib]$ psql -W
##Password: 
##psql (11.5)
##Type "help" for help.

##postgres=# \password
##Enter new password:   123456
##Enter it again: 

1. PG データ テーブルのエクスポートとインポート

sudo su -postgres

st で始まる pg エクスポート データベース testdata テーブル

pg_dump -U postgres -t 'st*' テストデータ > st.sql

pg export database testdata が st テーブルで始まらない

pg_dump -U postgres -T 'st*' テストデータ > no_st.sql

データではなく、テーブル構造のみをエクスポートします

pg_dump -U postgres -t -s 'st*00' テストデータ > st00.sql

pgファイルをインポート

psql -d testdata -U postgres -f st.sql > st.log

テーブルのテーブル名を切り捨てます。

select * from pg_database where datname='testdata';

2.特定の識別子を持つテーブルを削除する

psql -d 'testdata' -c "select distinct(table_name) from information_schema.columns where table_name LIKE '%202001%';" > /home/postgres/temp.txt

猫 /home/postgres/temp.txt | 行を読みながら

する

psql -d 'testdata' -c "drop table $line;"

終わり

3. PG データをコピーする

[root@node8 データ]# cat copy_pg_data.sh

#!/ビン/バッシュ

ファイル名=table_list.txt

psql -d testdata -U postgres -c "\d"|awk '{print $3}'|grep 20200402 > table_list.txt

for line in `cat ./${filename}`

する

new_name=${line/20200402/20200430}

table_name=${new_name%_*}

file_date=${new_name##*_}

#echo ${new_name} ${file_date} ${table_name}

psql -d testdata -U postgres -c "${new_name} が存在する場合はテーブルをドロップします。('${file_date}') の値に対して ${table_name} の ${new_name} パーティションが存在しない場合はテーブルを作成します;"

#echo "('${file_date}') の値に対して ${table_name} の ${new_name} パーティションが存在しない場合はテーブルを作成します。" >> create.log

psql -d testdata -U postgres -c "\copy ${line} to ${new_name}.data"

sed -i "s/20200402/20200430/g" ${new_name}.data

psql -d testdata -U postgres -c "\copy ${new_name} from ${new_name}.data"

#echo "success ${new_name}" >> success.log

終わり

rm -rf *.data

4. PG に空のテーブルがあるかどうかを確認します

#!/ビン/バッシュ

##データベースからテーブルリストを取得

デシベル = "postgres"

/usr/pgsql-10/bin/psql -h 192.168.20.71 -p 5432 -U postgres -d ${db} -c "\d" >tablesName.txt

num=`cat テーブル名.txt | awk '{if($3!="") print $3}' | wc -l`

number=$(($number-2))

echo "データベース num="$num

rm -rf tablesWithCounter.txt

for((n=3;n<=$num;n++))

する

table=`cat テーブル名.txt | awk '{if($3!="") print $3}' | sed -n $n'p'`

echo $table >> tablesWithCounter.txt

#/usr/pgsql-10/bin/psql -h 192.168.20.71 -p 5432 -U postgres -d ${db} -c "if (select count(*) as counter from $table ==0) then select $ pg_tables のテーブル" >>tablesWithCouter.txt

/usr/pgsql-10/bin/psql -h 192.168.20.71 -p 5432 -U postgres -d ${db} -c "select count(*) as counter from $table" >> tablesWithCounter.txt

終わり

テーブルインデックス=0

猫のtableWithCounter.txt | 行を読みながら

する

((テーブルインデックス=$テーブルインデックス+1))

#tbname="$line" |カット -c 1-2

if [[ "$line" == "da"* ]]

それから

tbname=$行

#echo $tableindex+"@"+$tbname

index1=$テーブルインデックス

フィ

if [[ "$line" == "0" ]]

それから

tbnull=$行

#echo $tableindex+"@"+$tbnull

index2=$テーブルインデックス

[[ (($index2-$index1==3)) ]] の場合

それから

echo $tbname $tbnull

フィ

フィ

終わり

5.PG はデータテーブルを GreenPlum にインポートします

#!/ビン/バッシュ

##/usr/pgsql-10/bin/postmaster -D /var/lib/pgsql/10/data/

#pg データテーブルを gp にインポート

#/usr/pgsql-10/bin/pg_dump -h 192.168.20.71 -p 5432 -U postgres -C -E UTF-8 -t datatest -d postgres | psql -h 192.168.20.73 -p 5432 -U postgres -d postgres

#/usr/pgsql-10/bin/psql -h 192.168.20.71 -p 5432 -U postgres -d postgres -c "select * from datatest" > temp.txt

##データベースからテーブルリストを取得

デシベル = "postgres"

/usr/pgsql-10/bin/psql -h 192.168.20.71 -p 5432 -U postgres -d ${db} -c "\d" >temp.txt

num=`cat temp.txt | awk '{if($3!="") print $3}' | wc -l`

number=$(($number-2))

echo "データベース num="$num

for((n=3;n<=$num;n++))

する

table=`cat temp.txt | awk '{if($3!="") print $3}' | sed -n $n'p'`

$テーブルをエコー

/usr/pgsql-10/bin/pg_dump -h 192.168.20.71 -p 5432 -U postgres -C -E UTF-8 -t ${table} -d postgres | psql -h 192.168.20.73 -p 5432 -U postgres -d postgres

終わり

6.新しいデータベース ユーザー

[postgres@hjr26 opt]$ psql -d postgres

postgres=# create user work スーパーユーザー パスワード 'xxxxx';

[postgres@hjr26 opt]$ psql -d postgres -U 仕事

postgres=# データベース testdata を作成します。

postgres=# \l

postgres=# \あなた

postgres=# \c テストデータ

これで、ユーザー「work」としてデータベース「testdata」に接続されました。

testdata=# \d

関係は見つかりませんでした。

7.データ テーブルの所有者を変更する

publicbigdata=#テーブル channel_cell の所有者を機能するように変更します。

他の机

publicbigdata=#\d

関係一覧

スキーマ | 名前 | タイプ | オーナー

------+---------------------+-------+----------

公開 | チャネル_セル | テーブル | 仕事

おすすめ

転載: blog.csdn.net/Wemesun/article/details/126213740