MySQL の INTO OUTFILE でデータを書きだす場合で、任意に改行を行う場合、
0x0d 0x0a あるいは、0x0a を出力すれば良いと思い、
CONCAT( str1, char(13), char(10), str2 )
または、
CONCAT( str1, char(10), str2 )
の結果を出力していれば良いと思っていたが、どうもダメみたいで、
ファイルを開くと、'\'文字がついて改行されたり、改行されなかったりする。
なぜか、CRコードである char(13) で指定すると、Windows上では、ファイルを開くと改行されてる。
(サンプル)
DELIMITER //
DROP PROCEDURE IF EXISTS test_sp
//
CREATE PROCEDURE test_sp()
BEGIN
DECLARE logstr NVARCHAR(1000);
SET logstr = '';
SET logstr = CONCAT(logstr, 'test', char(13), 'test');
SET @logger = CONCAT('SELECT \'' , logstr , '\' INTO OUTFILE \'' , '/var/log/','test' , DATE_FORMAT(now(),'%Y%m%d%H%i%s') , '.log\'');
PREPARE stmt FROM @logger;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
END
//
DELIMITER ;
call test_sp;