目的
SQLを極めようと思って、本を読んでいると思ったことがある。
データの登録が面倒すぎる!!!!!!!!!
ということで何か簡単にINSERTできる方法はないかと調べた。
データの数は多い方が、文によって実行速度が変わりやすいため、今回は100レコード登録することにする。
環境
PostgreSQL 14.1 (Ubuntu 14.1-1.pgdg18.04+1) on x86_64-pc-linux-gnu
DB作成
$ create database <database_name>
データベースを指定
\c <database_name>
テスト用テーブルを作成
この時のカラムとのちに追加するデータの制約などは一致させる必要がある
$ create table customer (profile_id int, first_name char(10), last_name char(10), age Char(5))
;
データを投入する
この追加するレコードのフィールドと先ほど作成したテーブルのカラムデータの制約などは一致させる必要がある
$ INSERT INTO customer (profile_id,first_name,last_name,age)
SELECT
-- idのvalueだが、iとすることでi行目のレコードとなる。つまり1,2,3...となる --
i,
format('田中%s', i),
format('太郎%s', i),
format('%s才', i)
-- 100件のデータを登録するため100としているが、ここは自由 --
-- 100回for文を回しているイメージ --
from generate_series(1,100) as i;
--INSERT 0 100--
結果
select * from customer;
profile_id | first_name | last_name | age
----------+--------------+--------------+--------
1 | 田中1 | 太郎1 | 1才
2 | 田中2 | 太郎2 | 2才
3 | 田中3 | 太郎3 | 3才
4 | 田中4 | 太郎4 | 4才
5 | 田中5 | 太郎5 | 5才
6 | 田中6 | 太郎6 | 6才
7 | 田中7 | 太郎7 | 7才
8 | 田中8 | 太郎8 | 8才
9 | 田中9 | 太郎9 | 9才
10 | 田中10 | 太郎10 | 10才
11 | 田中11 | 太郎11 | 11才
12 | 田中12 | 太郎12 | 12才
13 | 田中13 | 太郎13 | 13才
14 | 田中14 | 太郎14 | 14才
・
・
・
95 | 田中95 | 太郎95 | 95才
96 | 田中96 | 太郎96 | 96才
97 | 田中97 | 太郎97 | 97才
98 | 田中98 | 太郎98 | 98才
99 | 田中99 | 太郎99 | 99才
100 | 田中100 | 太郎100 | 100才
(100 rows)
できた。
おそらくこのようにテストデータを欲しい人はたくさんいると思うので、どんどん使って欲しい。