このクエリを使用して、いくつかのフィールドをファイルに出力したいと思います。
SELECT
CONCAT('[',
GROUP_CONCAT(
CONCAT(CHAR(13), CHAR(9), '{"name":"', name, '",'),
CONCAT('"id":', CAST(rid AS UNSIGNED), '}')
),
CHAR(13), ']')
AS json FROM `role`
INTO OUTFILE '/tmp/roles.json'
出力ファイルでは、次のようなものが表示されます。
[
\ {"name":"anonymous user","rid":1},
\ {"name":"authenticated user","rid":2},
\ {"name":"admin","rid":3},
\ {"name":"moderator","rid":4}
]
ご覧のとおり、改行(char(13)
)には円記号はありませんが、タブ文字(char(9)
)には円記号があります。どうすればそれらを取り除くことができますか?
UPDATE Sundar Gがキューをくれたので、クエリを次のように変更しました。
SELECT
CONCAT('"name":', name),
CONCAT('"rid":', rid)
INTO outfile '/tmp/roles.json'
FIELDS TERMINATED BY ','
LINES STARTING BY '\t{' TERMINATED BY '},\n'
FROM `role`
理由はわかりませんが、この構文では出力ファイルからバックスラッシュが削除されます。
{"name":"anonymous user","rid":1},
{"name":"authenticated user","rid":2},
{"name":"admin","rid":3},
{"name":"moderator","rid":4}
これはすでにかなり良い出力ですが、ファイルの最初と最後に開き角かっこと閉じ角かっこを追加したいと思います。MySQL構文を使用してこれを行うことはできますか、それとも手動で行う必要がありますか?