8

次のクエリを実行しています。

変数

SET @src = 'Test';
SET @tgt = 'Test2';
SET @db  = 'Test';
SET @pk  = 'ID, MyPk, etc';

SELECT CONCAT( @pk, GROUP_CONCAT(CONCAT( ", ", COLUMN_NAME) SEPARATOR "") )
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = @db
AND TABLE_NAME = @src
INTO @cols;

サンプル

SET @sql = CONCAT( 'INSERT INTO `', @tgt, '` (SELECT ', @cols, ' FROM `', @src, '`);' );
PREPARE stm FROM @sql;
EXECUTE stm;

それは...小さなテーブルで動作し、この @cols を複数の目的に使用できます。ただし、大きなテーブル (大量のフィールド) では機能しなくなります。1024文字で壊れていることに気付きました。LIMIT を無視します。1024 文字を超える変数を取得する方法や、この問題を回避する方法はありますか?

4

4 に答える 4

3

の結果に制限がありGROUP_CONCAT()ます。これは次の方法で変更できます。

SET group_concat_max_len = 10000
于 2013-05-23T21:11:14.460 に答える