2014-02-26 3 views
0

우리 팀과 저는 Oracle DB를 기반으로 Webapp를 빠르게 개발하고 있습니다. 우리는 maven의 플러그인 플라이 웨이를 사용하여 INSERT SQL 스크립트로부터 db 생성 및 채우기를 관리합니다. 일반적으로 우리는 스프린트마다 3 ~ 4 개의 테이블을 추가하거나 기존 테이블 구조를 수정합니다.수동으로 SQL 작성/관리를 피하는 방법

제약 조건을 포함하는 스키마를 생성하는 외부 도구에서 스키마를 모델링하고 모든 데이터의 무결성을 보장하기 위해 SQL INSERT가 먼저 실행됩니다.

새 테이블을 다루기 위해 SQL 변경 사항을 관리하는 데 너무 많은 시간을 소비합니다. 즉, 새로운 SQL INSERT 데이터의 수동 생성은 말할 것도없고 기존 SQL INSERT 문에 추가 열 데이터를 추가하는 것입니다. 그들은 외래 키를 참조합니다.

분명히 Excel의 원시 데이터를 유지하고이를 파서를 통해 DB에 전달하는 또 다른 방법이 있습니다. 누구에게 아이디어가 있습니까?

테이블 10 개까지 그리고 최대 1000 개의 SQL 문, DB는 실제로 존재하지 않으므로 모든 빌드에서 테이블을 찢어 버립니다.

감사

편집 : 삽입 된 데이터가 정적 참조 데이터 인 플랫폼은 기능에 따라 달라집니다 - 메뉴 등 아키텍처는 톰캣, JSF, 봄, JPA, 오라클

+0

이 어떤 언어와 프레임 워크는 당신이 – Mark

+0

JSF에서 웹 응용 프로그램을 작성, JPA와 Spring - 다음 최대 절전 모드에서 감사 – Magoo

+0

봐 - 당신은 여전히 ​​모든 스키마 변경 – Mark

답변

2

당신의 원시 데이터를 보관하십시오 데이터베이스의 테이블에서 - 헤이! 왜 지구상에서 이것을 위해 Excel을 사용하고 싶습니까? 당신은 Oracle Database를 가지고 있습니다 - 최고의 도구입니다!

SQL * Loader 또는 외부 테이블을 데이터베이스의 일반 테이블에로드하여 정리되지 않은 데이터를로드하십시오. 여기에서 SQL을 사용하면 데이터를 조작 할 수있는 가장 강력한 rdbms 도구입니다. 느리게 삽입해도 절대로 속도가 느려지지 않습니다. (1000 개의 SQL 문). CTAS를하십시오. 모든 데이터를로드 한 후 제약 조건을 추가/활성화합니다.

create table t as select * from raw_data; 

or 

insert into t (x,y,z) select x,y,z from raw_data; 

이 방법을 사용하면 SQL 엔진을 무시하고 직접 삽입 (직접 경로로드) 할 수 있습니다. 데이터를 데이터베이스 superfast에 넣기 위해 병렬로 수행 할 수도 있습니다!

SQL 또는 PLSQL에서 모든 데이터 조작을 수행하십시오. (애플리케이션에 포함되지 않음)

  • 오라클 데이터베이스를 배우려면 시간을 투자하십시오. 그것은 당신이 사용할 수있는 기능이 가득!
  • 데이터 덤프 (데이터를 저장하는 장소)처럼 사용하지 마십시오. 패키지 - 애플리케이션에 대한 인터페이스 - 데이터베이스에 대한 API.
  • 응용 프로그램에 컴파일 된 수천 개의 명령문을 던지지 마십시오. 그것은 지저분해질 것입니다.
  • 데이터베이스 내부에 비즈니스 로직을 구축하십시오. PLSQL - 프레젠테이션을 위해 애플리케이션을 사용하십시오.

행운을 빈다.

+0

+1하지만이 답변을 더 잘 표현할 수 있습니다. "Please do X"라고 호소하는 대신 "X를해야하기 때문에 ..."라고 말하는 것이 낫습니다. –

0

또는 Java 마이그레이션을 구현할 수도 있습니다. 그것은 당신이 가진 모든 입력 데이터 (Excel, CSV, ...)를 읽고 적절한 삽입을 할 수 있습니다.