Я новичок в программировании MYSQL. Я хочу выбрать в outfile очень большую таблицу в несколько файлов csv, используя сценарий цикла MYSQL. Мой сценарий выглядит следующим образом:
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 как CHAR));
Синтаксическая ошибка, вызванная WHILE ... DO. Спасибо за быстрый ответ. Здесь у меня все еще есть синтаксическая ошибка в «@t_lines,@t_lines+300000» после «limit». Я разобрался, кажется, «ограничение» не позволяет «@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
Спасибо большое