Oracle 데이터베이스에서 mySQL 데이터베이스로 큰 SQL 테이블을 가져와야합니다. 저는 RazorSQL을 사용하여 오라클 테이블을 "버렸습니다"그래서 많은 (2.5 GB) .sql 파일을 가지고 많은 INSERT
문이 있습니다.큰 SQL 파일을 문장 경계에서 분할 하시겠습니까?
이 파일은 너무 커서 분할하여 덩어리로 가져 오려고합니다. 그런 파일을 분할하는 영리한 방법은 무엇입니까? split
분할 중반 문의 높은 위험이되도록 몇 가지 문자열 값을 제외하고 작동 할 것 split
명령을 사용하여
줄 바꿈 문자가 포함되어 있습니다.
정규식을 사용하여 "; \ n"(명령문의 끝)으로 분할하는 Perl Quickie가 작동하지만, 여전히 그러한 문자 시퀀스가 데이터에서 발견 될 수있는 원격 가능성이 있습니다.
당연히 나는 문자열 인용을 이해하기 위해 파서를 작성할 수 있습니다. 더 똑똑한 것이 있는지 궁금합니다.
비슷한 질문이 있습니다. 예 :
How do I split the output from mysqldump into smaller files?
그러나 유일한 분할 솔루션은 일부 Windows 소프트웨어에 대한 제안하고있다. Windows는 나를위한 옵션이 아닙니다. 나는 유닉스, 즉 Mac OS X를 돌린다.
배경을 제공하기 위해 파일을 mySQL로 가져올 때 오류가 발생한다. 오류를 현지화하는 것은 시간이 많이 소요되고 편집을 위해 큰 텍스트 파일을 여는 것이 대부분의 텍스트 편집기에서 기껏해야 사소한 것이기 때문에 고통 스럽습니다. 일부 SQL 도구는 오류 위치를 파일에보고하지 않기 때문에 여러 번 분할하여 오류를 해결하는 이분법 접근법을 강력하게 제안합니다. 이것을 자동화하면 유용 할 것입니다.
아무쪼록 감사드립니다.
도구 mysqlimport를 사용할 수 있고 INSERT 문을 사용하지 않으면 작업이 훨씬 빨라지고 파서 오버 헤드가 중요하지 않습니다. 또한 데이터가로드 될 때까지 테이블에서 인덱스가 사용 불가능하게 설정되어 있는지 확인하십시오. 그 차이는 가져 오기 시간에 최대 몇 자릿수가 될 수 있습니다. ** split **를 사용하면 관심있는 문제가 발생하면 관심있는 파일을 생성 할 수 있습니다. 가져 오기 프로세스에서 끔찍한 오류 출력이 발생하는 경우 문제가있는 파일로 이진 검색을 수행하여 오류를 찾을 수 있습니다. – kevpie
필자가 말했듯이,'split'은 OK가 아닙니다. 문장 경계가 아닌 라인 경계에서 파일을 나눌 것입니다. 몇 줄에 걸쳐 실행되는 문장이 있습니다. 이진 검색을 위해서는 신뢰할 수있는 분할 솔루션이 필요합니다. 간단한 텍스트 기반 분할은 좋지 않습니다. 어쩌면 정규 표현식을 사용할 수도 있지만 regexp는 작은 따옴표를 인식해야합니다. –
생성하려는 파일의 크기는 몇 개입니까? – kevpie