2011-02-17 4 views
0

안녕하세요, 두 개의 데이터베이스가 있습니다. 145,000 개의 행과 약 1 개의 행이 있습니다. 12 열. 나는 약 40000 개의 행과 5 개의 열을 가진 다른 데이터베이스를 가지고있다. 두 열 값을 기반으로 비교하려고합니다. 예를 들어 CSV # 1 열 1에 100-199라고 표시되고 두 번째 열에 Main St (이 행이 100 개의 메인 스트리트 내에 있음을 의미)라고하면 CSV #에서 비슷한 두 열과 비교하면 어떨까요? 2. CSV # 1의 모든 행과 CSV # 2의 각 행을 비교해야합니다. 일치하는 항목이있는 경우 일치하는 각 행의 5 열을 CSV # 2 행 끝에 추가해야합니다. 따라서 CSV # 2의 열 수는 크게 늘어나고 항목이 반복됩니다. 열의 순서는 중요하지 않습니다. 별도의 데이터베이스에서 두 개의 열을 다른 두 개의 열과 비교 한 다음 모든 행을 반복하는 방법에 대한 조언. 나는 지금까지 나머지 작업과 함께 파이썬과 가져 오기 CSV를 사용 해왔다. 그러나 문제의이 부분은 나를 곤혹스럽게 만든다. 사전 요한 복음파이썬을 사용하여 다른 데이터베이스에 고유하지 않은 행을 추가합니다.

+0

죄송합니다. 일치하는 항목이있는 경우 각 일치하는 행의 #### 12 #### 열을 CSV # 2 행 끝에 추가해야합니다. –

+0

직접 의견을 말하지 마십시오. 문제. ** ** 당신의 질문입니다. ** ** 질문 **을 업데이트하고 의견을 삭제하십시오. 또한 단락을 사용하여 큰 텍스트 블록을 별도의 섹션으로 나누어 읽을 수 있도록하십시오. –

+1

CSV 파일 대신 데이터베이스를 사용 해본 적이 있습니까? 이렇게하면 정말 쉽습니다. –

답변

2
  1. CSV 파일

    덕분에 데이터베이스가 아닙니다. csv 파일은 텍스트 청크의 행입니다. PostgreSQL 또는 Mysql 또는 SQL Server 또는 SQLite 또는 많은 다른 데이터베이스와 같은 적절한 데이터베이스는 적절한 데이터 형식과 테이블 조인 및 인덱스를 제공하며 행 반복과 여러 일치 항목 및 기타 여러 가지 사항을 올바르게 처리합니다. 정말은 다시 작성하지 않습니다. 기스로부터.

  2. 주소 ("100-199") == 주소 ("메인 스트리트")는 어떻게 알 수 있습니까? 텍스트의 각 비트를 표준 주소 또는 주소 범위로 변환하는 일종의 지식 기반을 만들어야합니다. Where is a good Address Parser을 참조하십시오. 단점 주소 (주소 범위가 아님)를 처리한다는 점에 유의하십시오.

편집 : 스벤에

감사합니다; 당신이 진짜 데이터베이스를 사용한다면, 당신은 streetnumber 및 streetname이 정확한 일치하는 경우

SELECT 
    User.firstname, User.lastname, User.account, Order.placed, Order.fulfilled 
FROM 
    User 
    INNER JOIN Order ON 
     User.streetnumber=Order.streetnumber 
     AND User.streetname=Order.streetname 

과 같이 할 수 있습니다; 그렇지 않으면 위의 2 번을 고려해야합니다.

+1

2와 관련하여 OP는 조인의 키로 두 개의 열을 사용하려고합니다. 다른 "데이터베이스"는 정확하게 동일한 두 값을 가진 행을 포함합니다. –

+0

ok 감사합니다. 전에 SQL을 사용하지는 않았지만 CSV를 가져 오는 방법에 대해 읽었습니다. 그런 다음 해당 종류의 쿼리를 사용합니다. 나는 또한 "100-199 메인 스트리트"라는 새로운 컬럼을 만들기로 결정했다. –

관련 문제