2013-01-06 2 views
0

java 또는 데이터베이스에서 다음과 같은 문제의 해결책을 찾고 있습니다. 도와주세요.차동 파일을 데이터베이스에로드하십시오.

우리는 파일을 읽고 오라클 데이터베이스에 레코드를 넣어해야합니다. 파일은 FTP 위치에서 csv 형식과 같습니다 (열 값은 파이프로 구분됨). 파일 이름이 employee.txt이고 해당 테이블 이름이 Employee라고 가정 해 봅시다. 파일 전체 기록을 항상 포함됩니다

1234|saurabh srivastava|lead|06-0ct-1990 
1235|a john|lead|09-nov-1992 
1236|p kumar||10-dec-1991 

-로 열을 Asuming -로 txt 파일에

ID 
name 
Designation 
Date_of_Joining 

기록하는 것입니다. 처음으로 파일에 10 개의 레코드가 있으면 다음에 새로운 레코드와 함께이 10 개의 레코드를 갖게됩니다. 그러나 매번 데이터베이스에 새 레코드 만 저장해야합니다. 자바 프로그램이나 데이타베이스 (프로 시저, 쿼리 등)를 사용하는 방법이 있습니까?

감사합니다.

+0

새 레코드는 항상 파일의 끝에 있거나 다양한 위치에서 혼합 될 수 있습니다. – Henry

+0

파일 만들기는 실제로 데이터베이스에서 내보내기입니다. 매번 기록을 어떻게 기록 할 지 모르겠습니다. – Saurabh

+0

가치가 있지만 테스트는 기본 키 순서로 진행됩니다. 따라서 키가 자동 증분 필드 인 경우 항상 맨 아래에 최신 정보가 표시됩니다. 그런 다음 텍스트가 한 버전에서 다른 버전으로 수정되면 다른 문제가 발생할 수 있습니다. 그것은 빨아 것이지만, 테이블을 자르고 텍스트 파일에서 복원하여 백업 시점의 모든 상태를 유지해야 할 수도 있습니다. . – Mike

답변

0

최상의 방법은 여러 가지 방법이있을 수 있습니다. 데이터베이스에 저장할 수있는 파일을 수정 한 파일이 없다고 가정하면 마지막 행을 읽을 수 있습니다. 그런 다음 자바 프로그램은 파일을 열 수 있고, 데이터베이스 (또는 마지막으로 읽은 행 번호가있는 다른 파일)의 마지막 행을 다음 행으로 건너 뛰고 (데이터베이스가 있다고 가정하고) 데이터베이스로 파싱/삽입을 시작할 수 있습니다. 필자는 모든 파싱 처리를 클라이언트 나 다른 "로그"서버로 분리 할 수있는 대신 서버로 가져 오는 것이 가능하다고 가정 할 때 데이터베이스 만 접근하는 것이 좋을 것이라고 생각하지 않습니다. 서버.

어쨌든 마지막 줄을 계속 읽어야한다면 어쨌든 전체 파일을 매번 처리해야하고 결국에는 효율적이지 않고 오래 걸릴 것입니다. 시간이 지남에 따라 더 길다.

+0

나쁜 소식은 :(새 레코드가 파일의 끝에있을 것입니다 필요는 없다 다음과 같은 구조가 가능하다 :. 을 File1 : 녹음합니다 기록 B 기록 C 파일 2 : 기록 A, 기록 C 이 경우 기록 D 그래서, 파일 2는 직원이 더 이상 – Saurabh

+0

등을 볼 수 있습니다 될 수있다, 전혀 기록 B이 없다하지 않을 수 있습니다, 우리는이 같은 것 키 조합 및 높은 수준의 디자인에 의존해야 - 1. \t 우리는 두 테이블을 유지할 것입니다. . \t Employee 및 Employee_tmp 2. \t 읽기 파일 Employee_tmp 모든 것을 저장 3. \t Employee 테이블은 Employee 테이블 4. \t 청소 Employee_tmp 테이블에 Employee_tmp에서 5. \t 다음 반복 6. \t 읽기 파일을 모든 레코드를 복사 Employee_tmp에 모든 것을 저장 비어있는 경우 7.\t Employee_tmp 테이블의 행 수가 0보다 큰 경우 – Saurabh

+0

아래와 같이 레코드가 일치해야합니다. [Java 또는 데이터베이스에서 프로그램을 작성해야 할 경우 분석해야합니다.] - a. \t Employee_tmp 테이블에서 키 선택 [직원 ID] b. \t 직원 테이블에 이미 있는지 확인하십시오. 그렇다면 다음 레코드로 건너 뛰고 레코드를 삽입하십시오. 제안 해주세요. – Saurabh