postgreSQLの学習をしていて、デフォルトでpostgreが入っているCドライブの容量がいっぱいになってきてしまいました。
大量のレコードを今後も入れる必要があったので、新たにD
ドライブにテーブルスペースを作成し、容量をこれ以上増やさないようにしていきます。
前提
Windows10
postgreSQL 11
postgreSQLはCドライブで展開されている。
空き容量としてDドライブがある。
データベースへの接続
データベースに接続(postgresのデータベースに接続)
※おそらく、デフォルトでpostgresになっている。
postgres-# \c postgres
データベース"postgres"にユーザ"postgres"として接続しました。
postgres-#
テーブルスペースの作成
SQLshell(psql)を起動し、コマンドを入力。
postgres=# CREATE TABLESPACE test_data LOCATION 'D:\test_data';
CREATE TABLESPACE
postgres=#
LOCATIONの後に、テーブルスペースを保存する場所を記入する。保存場所は、前もってユーザー様に許可をもらった上でディレクトリを作成しておかなければならない。
作成したテーブルスペースの確認は下記コマンド。
postgres=# \db
テーブル空間一覧
名前 | 所有者 | 場所
-------------------+-------------+--------------
pg_default | postgres |
pg_global | postgres |
test_data | postgres | D:/test_data/
(3 行)
★権限を設定できませんでした:Permission denied とエラーが出てしまったら、ディレクトリの場所を変える。D:直下なら、おそらく大丈夫。ディレクトリの場所が入力間違いしてないか確認。CとD間違えがち。
★同じディレクトリで既にテーブルスペースが使用されているとエラーになってしまう。
★pg_で始まるテーブルスペース名はつけることができない。
#### テーブルを作成する
スキーマを指定せずにテーブルを作成すると、デフォルトでpublicスキーマ内にテーブルが作成される。
↓現在のスキーマが確認できる。
postgres=# select current_schema;
current_schema
----------------
public
(1 行)
テーブルを作成する。テーブルスペースと紐づかせる為の記述もする。
CREATE TABLE テーブル名(カラム、データ型) TABLESPACE テーブルスペース名;
以下、例。
CREATE TABLE testtable (
red bigint not null,
blue varchar(10000) not null,
yellow varchar(10000) not null,
green varchar(10000) not null,
pink numeric not null,
orange integer not null,
black varchar(10000) not null)
TABLESPACE test_data;
これで、今後testtableにレコードをロードしていく時にはCドライブではなくてDドライブにあるテーブルスペース側にロードされていく。
参考:https://goodbyegangster.hatenablog.com/entry/2019/05/01/011747