概要
into outfile はいろいろと面倒なので into outfile を使わずに csv にする方法を紹介します
db_name と table_name は自身の環境に合わせて変更してください
またカラム名に予約語が入っていることを考慮して内部で生成している SQL をバッククオートで囲んでいます
環境
- MySQL 5.6.22
SQL
SET
@VTable = 'table_name'
;
SET
@VAllCols = CONCAT('SELECT CONCAT(',(
SELECT
CONCAT('\`',(
SELECT
GROUP_CONCAT(COLUMN_NAME SEPARATOR '\`,\', \',\`')
FROM
information_schema.columns
WHERE
TABLE_NAME = @VTable
GROUP BY
table_name
), '\`) FROM ', @VTable, ';')
))
;
PREPARE stmt
FROM
@VAllCols
;
EXECUTE stmt
;
DEALLOCATE PREPARE stmt
;
シェルから1行で実行したい場合
mysql -u user_name -p db_name -h 192.168.100.1 -e "SET @VTable = 'table_name'; SET @VAllCols = CONCAT('SELECT CONCAT(',(SELECT CONCAT('\`',(SELECT GROUP_CONCAT(COLUMN_NAME SEPARATOR '\`,\',\',\`') FROM information_schema.columns WHERE TABLE_NAME = @VTable GROUP BY table_name),'\`) FROM ', @VTable, ';'))); PREPARE stmt FROM @VAllCols; EXECUTE stmt; DEALLOCATE PREPARE stmt;"
最後に
自動でカラム情報を抽出しているのでカラムの順番は決められないのでご注意ください
0 件のコメント:
コメントを投稿