【Postgresql】 テーブル全体を固定長データとして出力するサンプル
サンプルテーブルの構造は以下の通り
select * from nyukintable;
id | siten | kokyakuid | nyukin | torihikibi
----+-------+-----------+--------+------------
1 | 東京 | 001 | 77500 | 2007-01-01
2 | 大阪 | 002 | 56200 | 2007-01-02
3 | 福岡 | 003 | 17900 | 2007-01-03
4 | 東京 | 004 | 27000 | 2007-01-04
5 | 大阪 | 005 | 71000 | 2007-01-05
6 | 福岡 | 006 | 13100 | 2007-01-06
7 | 東京 | 007 | 680 | 2007-01-07
8 | 大阪 | 008 | 7600 | 2007-01-08
9 | 福岡 | 009 | 61600 | 2007-01-09
10 | 東京 | 010 | 28400 | 2007-01-10
1つの文字列に変換します
ついでにヘッダーもつけてみます
WITH read_str AS (
SELECT rpad(nyukintable.id::text, 3, ' '::text) AS id,
rpad(nyukintable.siten::text, 5, ' '::text) AS siten,
rpad(nyukintable.kokyakuid::text, 8, ' '::text) AS kokyakuid,
rpad(nyukintable.nyukin::text, 10, ' '::text) AS nyukin
FROM nyukintable
), fix_header AS (
SELECT '0001AAAABBBBCC'::text AS head
), data_rec AS (
SELECT array_to_string(array_agg(ARRAY[read_str.id, read_str.siten, read_str.kokyakuid, read_str.nyukin]), ''::text) AS hurikomi
FROM read_str
)
SELECT fix_header.head || data_rec.hurikomi
FROM fix_header,
data_rec;
結果
------------------------------------
0001AAAABBBBCC1 東京 001 77500 2 大阪 002 56200 3 福岡 003 17900 4 東京 004 27000 5 大阪 005 71000 6 福岡 006 13100 7 東京 007 680 8 大阪 008 7600 9 福岡 009 61600 10 東京 010 28400 11 大阪 011 32700 12 福岡 012 46500 13 東京 013 10200 14 大阪 014 43000 15 福岡 015 48200 16 東京 016 83700 17 大阪 017 92400 18 福岡 018 17800 19 東京 019 91400 20 大阪 020 70300 21 福岡 021 37900 22 東京 022 3700 23 大阪 023 1900 24 福岡 024 91700 25 東京 025 6800 26 大阪 026 96600 27 福岡 027 55900 28 東京 028 65800 29 大阪 029 74400 30 福岡 030 76400 31 東京 031 90400 32 大阪 032 4300 33 福岡 033 16100 34 東京 034 63700 35 大阪 035 64000 36 福岡 036 83600 37 東京 037 19900 38 大阪 038 84900 39 福岡 039 3400 40 東京 040 16100 41 大阪 041 97400 42 福岡 042 1800 43 東京 043 1500 44 大阪 044 94100 45 福岡 045 62500 46 東京 046 4100 47 大阪 047 46200 48 福岡 048 51900 49 東京 049 7800 50 大阪 050 41200