MySQL 5.5 물리적 호스트 데이터베이스를 MySQL 5.6 AWS Aurora 데이터베이스로 마이그레이션하려고합니다. 나는 데이터가 INTO OUTFILE
을 사용하여 파일에 쓰여질 때, 5.5는 NULL
값을 '\N'
으로 쓰고 빈 문자열은 ''
으로 쓰는 것을 알아 챘다. 그러나 5.6은 빈 문자열과 NULL을 모두 ''
으로 작성합니다. 종료 필드와 FIELDS에 의해 둘러싸인 때 사용되는 고정 행 형식 (와MySQL 5.6, NULL로 N을 내보내는 방법?
https://dev.mysql.com/doc/refman/5.6/en/load-data.html
:
쿼리
SELECT * FROM $databasename.$tablename INTO OUTFILE $filename CHARACTER SET utf8 FIELDS ESCAPED BY '\\\\' TERMINATED BY $delimiter;
나는 이것에 대해 공식 문서 발견 모두 비어 있음), NULL은 빈 문자열로 기록됩니다. 이로 인해 테이블의 NULL 값과 빈 문자열 모두가 이 공백 문자열로 작성 되었기 때문에 파일에 쓸 때 구별 할 수 없게됩니다. 파일을 다시 읽을 때 두 가지를 구분할 수 있어야하는 경우 고정 행 형식을 사용하면 안됩니다.
NULL
을 '\N'
으로 내보내려면 어떻게해야합니까?
'' '('' ''없이)'\ N'을 사용 하시겠습니까? 이는 5.5와 5.6 모두에 대한 기본 동작이며 문서의 견적에있는 경우 5.5와 5.6 모두에 대해 비어있게됩니다. 혹시 다른 $ 구분자를 사용하셨습니까? 비어있는 경우에는 따옴표가 말한 것처럼'null'과'' ''모두에 대해 "아무것도"생성하지 않습니다. 파일에서 '\ N'을 얻었습니까? 아니면 다시 가져온 후에 데이터베이스에서 가져 왔습니까? 그리고 다시 반출했을 것입니다. 그러면 잘못 가져올 수 있습니다. – Solarflare