2017-11-26 7 views
1

mysql에서 csv 파일로 일부 데이터를 익스포트해야합니다. 하지만 열 중 하나에서 줄 바꿈이 생기고 데이터를 CSV 파일로 내보내 중단 줄을 저장해야합니다.MySQL 데이터를 CSV 파일로 내보낼 때 줄 바꿈을 유지하는 방법?

select username, description from users into outfile '/tmp/test.csv' FIELDS ESCAPED BY '"' TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\n'; 

그러나 SQL 쿼리는 CSV 파일에 줄 바꿈 저장하지 않습니다이 나는 다음과 같은 SQL 쿼리를 사용하고 순간

. 누군가가 도와 주시면 감사하겠습니다.

답변

1

https://bugs.mysql.com/bug.php?id=40320 2008 년부터 버그가보고되었습니다. 아직 테스트를 해본 결과 여전히 버그 인 것으로 나타났습니다. MySQL 8.0.3.

SELECT username, REPLACE(description, '\n', '\\n') FROM users 
INTO OUTFILE '/tmp/test.csv' FIELDS ESCAPED BY '"' TERMINATED BY ',' 
OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\n'; 

파일 (즉 두 자) 문자 \n 텍스트로 내보낼 :

가 나는 버그를 해결 이런 식으로 작업 할 수 있습니다.

LOAD DATA INFILE '/tmp/test.csv' INTO TABLE users 
FIELDS ESCAPED BY '"' TERMINATED BY ',' 
OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\n' 
SET description = REPLACE(description, '\\n', '\n'); 

이것은 물론, 아주 우아한 아니지만, 해결의 : 데이터가로드 될 때, 교체는 반대해야합니다.

다른 옵션은 내보내기 및 가져 오기를 수행하는 응용 프로그램을 작성하고 SELECT...INTO OUTFILE 또는 LOAD DATA INFILE을 사용하지 않는 것입니다.

+0

괜찮 았어! 도와 줘서 고마워! 10 년 후 그 버그를 발견 할 수 있다는 것은 놀라운 것 같습니다 ... –