다양한 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.