私はMYSQLプログラミングが初めてです。MYSQL ループ スクリプトを使用して、非常に大きなテーブルをいくつかの csv ファイルに出力したいと考えています。私のスクリプトは次のとおりです。
BEGIN
SET @t_lines=0;
SET @t_count=0;
SET @t_filepath='/home/ab/path/table_name_02212013_';
WHILE t_lines<=5000000
SET @t_filename=CONCAT(@t_filepath,CAST(@t_count as CHAR));
select * into outfile @t_filename fields terminated by ',' optionally enclosed by '"' lines terminated by '\n' from table_name limit @t_lines,@t_lines+300000;
SET @t_lines= @t_lines+300000;
SET @t_count= @t_count+1;
END WHILE;
COMMIT;
END
行で構文エラーが発生しました:
SET @t_filename=CONCAT(@t_filepath,CAST(@t_count as CHAR));
WHILE ... DO による構文エラー。迅速な返信ありがとうございます。ここで、「制限」の後の「@t_lines、@t_lines + 300000」にまだ構文エラーがあります。私はそれを理解し、行範囲を与えるために「@t_lines + 300000」を許可されていない「制限」のようです。新しい変数を与えることで修正できます:
BEGIN
DECLARE t_lines INT DEFAULT 0;
DECLARE t_count INT DEFAULT 0;
DECLARE t_endlines INT DEFAULT 300000;
DECLARE t_linerange INT DEFAULT 300000;
SET @t_filepath='/home/ab/path/table_name_02212013_';
WHILE t_lines<=5000000 DO
SET @t_filename=CONCAT(@t_filepath,CAST(@t_count as CHAR));
select * into outfile '@t_filename' fields terminated by ',' optionally enclosed by '"' lines terminated by '\n' from table_name limit t_lines,t_endlines;
SET t_lines= t_lines+t_linerange;
SET t_endlines= t_endlines+t_linerange
SET t_count= t_count+1;
END WHILE;
COMMIT;
END
どうもありがとう