2017-11-11 12 views
0

매일 웹 페이지, POS 등을 통한 데이터 입력이 아닌 내 데이터베이스로 가져 오는 내용의 플랫 파일 (CSV)을 매일받습니다. 레코드에는 40 개의 필드가 있으며 고유 레코드는 최대 60 만 개입니다.플랫 파일 입력 - MySQL 모범 사례

지금까지 필자는 관계형 데이터베이스를 만들 필요가 있다는 것을 보지 못했지만 확실히 좀 더 효율적으로 만드는 정규화가 있습니다. 반복적 인 제품, 상점, 고객, 리셀러 등

처음부터이 데이터를 어떻게 시작 하든지 점진적으로 데이터를 입력했다면, 모든 것을 처리하는 방법을 알았을 것입니다. 그런데 다량의 데이터가 이미 있고 그것을 관계형으로 만들 필요가있을 때 커버하지 않습니다.) 그리고 매일 CVS가 등장하면서 데이터베이스가 설정되면 어떻게 데이터를 가져올 지 잘 모르겠습니다. 그 40 개의 필드를 5 개의 테이블로 나누면 같은 방법으로 분할하고 한 번에 하나씩 가져와야합니까? 외래 키가 그렇게 업데이트됩니까?

누군가 나를 올바른 방향으로 밀어 넣을 수 있다면 더 많이 파고 갈 것입니다.

같은 프로젝트에 직면했다면 어떻게 그러한 데이터베이스를 만들고 매일 업데이트를 수행하겠습니까?

감사합니다.

답변

0

데이터베이스 구조를 현재 보유하고있는 것과 독립적으로 만듭니다 (CSV 구조 및 데이터). 예 : 미래의 필요에 맞게 테이블을 정리하고, 그들 사이의 관계를 생각하고 정의하며, 적절한 색인을 적용하십시오.

내 의견으로는 피할 수없는 두 번째 단계는 자신의 프로그래밍 언어로 약간의 프로그램을 작성하는 것입니다. 그것은

  • 검증 /는 가져온 데이터를 살균, 주로 (CSV) 파일에서 레코드/행을 읽어

    • 할 수 있어야한다
    • 가져 오기/필요에 따라 대응 데이터베이스 테이블에 데이터를 저장합니다. "필요에 따라"즉, 제 시간에, 당신의 첫 번째 DB 구조 결정에 예기치 않게 영향을 미칠 수있는 다수의 요소가 나타날 수 있습니다. 예를 들어, 일부 임시 테이블에 대한 필요성. 또한 트리거 및 저장 프로 시저가 제공하는 이점을 활용해야합니다.
    • 은 가져 오기 프로세스에서 발생하는 오류 및 예외를 올바르게 처리합니다. 예를 들어, 결과적으로 "중복 키"문제로 인해 파일의 데이터가 오류가 발생할 수 있기 때문에 특정 날짜에 일부 레코드를 가져올 수 없습니다. 그렇다고해서 수입이 중단되지 않는다는 의미는 아닙니다. 레코드를 읽고 저장하십시오. 문제가 발생하면 처리 (다른 파일의 행을 복사하거나 특수한 테이블에 저장하여 나중에 편집/수정하고 다시 가져 오기)하고 프로그램이 다음 기록으로 그 과정을 따라 가게하십시오.
    • 제대로 모든 (주) 작업을 기록하고 읽기 및 문제가되는 레코드의 카운터를 유지 관리하십시오.
    • 은 가져 오기 후 매일 백업 디렉토리에서 매일 필요없는 파일을 자동으로 복사합니다.
    • 은 전자 메일을 통해 작업 상태를 알려줍니다.

    세 번째 단계는 전체주기를 자동화하는 솔루션을 찾는 것입니다. 예를 들어, task/cron-jobs 관리자가 하루에 한 번 또는 두 번 매일 프로그램을 시작하는 것을 찾으려면 수동으로하지 않아도됩니다.

    파일을 다른 파일로 분할하는 것과 관련하여 데이터베이스 구조를 기반으로합니다. 프로그램이 파일을 읽고 그에 따라 데이터 가져 오기를 관리해야하므로 중복 단계가됩니다.

    프로그램 유형 : 웹 솔루션이어야하므로 언제든지 액세스하고 수정할 수 있습니다.

    행운을 비네.

  • +0

    큰 윤곽선과 정확히 내가 찾고있는 방향입니다. 감사 aendeerei! –