これを試してください:
SET @schema = 'test_db';
SET @table = 'test';
SELECT CONCAT(
'SELECT CONCAT(TRIM(TRAILING ', QUOTE(','), ' FROM CONCAT(', QUOTE('{'), ',',
GROUP_CONCAT(QUOTE('"'), ',', QUOTE(COLUMN_NAME), ',',
QUOTE('"'), ',', QUOTE(':'), ',', QUOTE('"'), ',', COLUMN_NAME, ',',
QUOTE('"'),',', QUOTE(',')),
')), ''}'') FROM ', @table
)
INTO @qry FROM
(SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS c
WHERE TABLE_SCHEMA = @schema AND TABLE_NAME = @table) t;
SELECT @qry;
PREPARE stmt FROM @qry;
EXECUTE stmt;
上記のクエリは、JSON形式のテーブルデータを生成します。クエリを使用すると、データベースとテーブルの名前を入力パラメータとして使用してストアドプロシージャを準備し、データを入力できます。テーブルの一部の列を除外する場合は、INFORMATION_SCHEMA
からデータを選択するクエリを変更するだけです。 SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS c WHERE TABLE_SCHEMA = @schema AND TABLE_NAME = @table AND COLUMN_NAME NOT IN (**columns to exclude**)
のようなデータベース 。