다양한 CR 및 LF 줄 바꿈으로 텍스트 파일 정리


3

메모가 포함 된 텍스트 파일을 mySQL로 가져 오려고합니다. 그들이 어떻게 관리했는지는 모르겠지만 메모 필드는 CR LF에 의해 일관되게 종료되지만 텍스트 자체에는 CR, LF 및 CR LF 줄 바꿈이 혼합되어 있습니다.

줄 바꿈을 구성하는 요소에 대한 명확한 표시가 없으므로 당연히 가져 오기 기능이 손상됩니다. 가져 오는 동안 데이터의 약 절반이 손실되고 컷을 생성 한 것의 25 %가 잘립니다.

이 엉망진창을 분류하는 가능한 방법이 있습니까? 원래 Access에서 내보냈습니다.

감사!


2
CRLF 및 LF 문자의 일부 조합으로 인해 데이터를 가져 오는 기능이 자연스럽게 중단되는 이유는 무엇입니까? 줄 바꿈은별로 중요하지 않습니다. 어떻게 가져오고 있습니까?
Ярослав Рахматуллин

LOAD DATA LOCAL INFILE 'source_data.csv' 'my_table'필드에 ','OPTIONALLY ENCLOSED by ' "' 'LINE_ TERMINATED BY'\ r \ n '으로 가져 오기 마지막 행은이 가져 오기 문제를 해결하기 위해 최근에 추가 한 것입니다. 원래 문제는 줄 바꿈까지 메모를 가져올 수 있다는 것이 었습니다 .mySQL은 다음 줄의 시작이라고 생각하여 유효한 CSV가 아니기 때문에 나머지 텍스트를 덤프하고 다음 줄로갑니다. 때로는 동일하게 작동하지 않는 경우도 있습니다
Ivan Ivan

마지막 주석을 삭제하고 (A) 가져 오는 데 사용하는 클라이언트 / 도구 / 환경에 대한 설명 (phpmyadmin? 다른 것?), (B) 문제가있는 입력 텍스트의 짧은 샘플, (C) 테이블 정의로 질문을 업데이트하십시오. 관련 열 / 레코드. 행운을 빕니다.
Ярослав Рахматуллин

답변:


1

양호한 CR + LF가 메모 필드를 둘러싸고있는 작은 따옴표를 벗어나면 삭제하려는 CR + LF와 일치하도록 다음 모양이 작동해야합니다.

(?<!')\r\n

정규식 시각화

Debuggex에서 실시간 편집

원래 답변 :

텍스트 파일에서 정규식을 실행할 수 있습니까?

\r\n?|\n

모든 일치 항목을 원하는 개행 코드로 바꿉니다 (예 :) \r\n.


고마워,하지만 그것은 더 나아질 것입니다. CR과 LF를 개별적으로 제거하면서 살 수 있습니다. 모든 것을 망치는 것은 무작위 CR + LF입니다.
Ivan

오 "Blah blah \ r \ nblah blah"\ r \ n? 그리고 당신은 마지막 것을 유지하고 싶지만 텍스트 중간에있는 것을 유지하고 싶지 않습니까? 실제 \ r \ n 바로 뒤에 무엇이 나오는가? 임의의 데이터가있는 열 A입니까? 샘플은 훌륭하지만 다른 정규 표현식에 대한 아이디어가 있다고 생각합니다.
Dane

실제로 샘플이 필요합니다. 메모 필드는 작은 따옴표로 묶지 않습니까? 작은 따옴표가 앞에 붙은 \ r \ n을 유지하고 나머지는 제거 할 수 없습니까? 이 예견은 모든 나쁜 것들과 일치하는 것 같습니다 :(?<!')\r\n
Dane

당신의 노력에 감사드립니다. 나는 당신이 그 마지막 정규식에 뭔가있을 수 있다고 생각합니다. 나는 그들의 중요성을 이해하지만 나는 글을 쓰는 것에 대해 이해가되지 않아서 당신의 도움에 감사드립니다! 지금 테스트 중입니다. 초기 결과는 유망 해 보였다.
Ivan

0

유지하려는 CR-LF 또는 LF에 따라 가져 오기 파일을 CR-LF에서 LF로 변환하거나 정리할 수 있는 unix2dos / dos2unix 스타일 유틸리티를 사용할 수 있으며 그 반대도 마찬가지입니다.

유닉스 / 리눅스 플랫폼에 있다면 dos2unix 및 unix2dos 명령을 사용할 수 있어야합니다.
Windows를 사용 중이고 Cygwin (또는 동등한 제품) 이없는 경우 tofrodos를 시도 할 수 있습니다.


0

데이터 자체에 CR LF가 있고 일종의 한정자 (예 : "")로 묶여 있지 않으면 해당 줄이 여러 줄로 나뉩니다. 가장 좋은 방법은 Access에서 데이터를 정리하고 다시 내보내는 것입니다. CR LF가 정규화 된 경우 파일을 조작하고 (아마도 AWK를 사용하고있을 것임) 규정되지 않은 CR LF를 \ n으로 바꿀 수 있어야합니다.

좀 더 정확한 정보를 얻으려면 데이터에 대해 좀 더 알아야합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.