programing

Oracle: CSV 파일 Import

batch 2023. 3. 27. 21:07
반응형

Oracle: CSV 파일 Import

한참을 찾아봤지만 답을 찾을 수가 없어서...

Oracle(9i/10i)의 테이블로 Import할 CSV 파일이 있습니다.

나중에 이 테이블을 다른 용도로 사용할 예정입니다.

IN 절을 사용하여 1000개 이상의 값을 쿼리할 수 없기 때문에 실제로 이 문제를 해결하려고 합니다.

SQLPLUS를 사용하여 이 작업을 수행하는 방법

시간 내주셔서 감사합니다!:)

SQL Loader를 사용하면 CSV 파일을 테이블에 로드할 수 있습니다.SQL*로더

sqlplus만 원하는 경우 조금 복잡합니다.sqloader 스크립트와 csv 파일을 찾은 다음 sqldr 명령을 실행해야 합니다.

사용할 수 있는 또 다른 솔루션은 SQL Developer입니다.

이 기능을 사용하면 csv 파일에서 가져올 수 있습니다(다른 구분된 파일을 사용할 수 있습니다).

테이블 보기를 연 다음 다음과 같이 하십시오.

  • 행동을 선택하다
  • 데이터를 Import하다
  • 파일 검색
  • 옵션을 선택합니다.

SQL Developer에 의한 삽입, SQL 삽입 스크립트 작성 또는 SQL Loader 스크립트의 데이터 작성 옵션이 있습니다(이 옵션은 직접 사용해 본 적이 없습니다).

물론 명령줄만 사용할 수 있다면 이 모든 것이 가능하지만 SQL Developer를 사용하여 로컬로 테스트할 수 있다면 생성된 삽입 스크립트를 언제든지 배포할 수 있습니다(예를 들어).

이미 매우 좋은 답변 2개에 다른 옵션을 추가하는 것 뿐입니다.

대체 솔루션으로는 외부 테이블을 사용합니다.http://www.orafaq.com/node/848

이 가져오기를 매우 자주 그리고 매우 빠르게 수행해야 할 때 사용합니다.

SQL Loader를 사용하는 것이 좋습니다.최근에 csv 파일에서 테이블을 로드했는데, 이 컨셉이 처음이라 예를 들어 보겠습니다.

LOAD DATA
    infile '/ipoapplication/utl_file/LBR_HE_Mar16.csv'
    REPLACE
    INTO TABLE LOAN_BALANCE_MASTER_INT
    fields terminated by ',' optionally enclosed by '"'
    (
    ACCOUNT_NO,
    CUSTOMER_NAME,
    LIMIT,
    REGION

    )

서버상의 같은 장소에 제어 파일과 csv를 배치합니다.sqldr exe를 찾아 청구서를 발행합니다.

sqldr userid/passwd@DBname control= Ex : sqlldr abc/xyz@ora control=load.ctl

도움이 됐으면 좋겠다.

제가 오픈월드 2012에서 소개한 프레임워크에 대한 링크를 올려달라고 요청받았습니다.이 글은 외부 테이블을 사용하여 솔루션을 설계하는 방법을 설명하는 전문 블로그 게시물입니다.

2가지 힌트를 공유하겠습니다. (팁 1) csv 파일 작성 (팁 2) csv 파일에서 테이블로 행을 로드합니다.

====[(팁 1) Oracle 테이블에서 csv 파일을 생성하기 위한 SQLPLUS ]====

SQLPLUS는 다음 명령과 함께 사용합니다.

set markup csv on
set lines 1000
set pagesize 100000 linesize 1000
set feedback off 
set trimspool on
spool /MyFolderAndFilename.csv
Select *  from MYschema.MYTABLE  where MyWhereConditions ;
spool off
exit

====[csv 파일을 테이블에 로드하기 위한 팁 2 SQLDR]====

테이블에 csv 파일을 구성하는 (APPEND) 행을 추가하려면 SQLDR과 csv(쉼표로 구분) 파일을 사용합니다.파일에는 가 있습니다.필드 사이의 텍스트필드에는 텍스트의 앞뒤가 "CRITIAL: 마지막 열이 늘인 경우 행 끝에 가 있습니다.

csv 파일의 데이터 행 예:

11,"aa",1001
22,"bb',2002
33,"cc",
44,"dd",4004
55,"ee',

제어 파일은 다음과 같습니다.

LOAD DATA
APPEND 
INTO TABLE MYSCHEMA.MYTABLE
fields terminated by ',' optionally enclosed by '"'
TRAILING NULLCOLS
(
CoulmnName1,
CoulmnName2,
CoulmnName3
)

이것은 Linux에서 sqldr을 실행하기 위한 명령어입니다.Windows 를 실행하고 있는 경우는, /c 대신에 \ 를 사용합니다.

sqlldr userid=MyOracleUser/MyOraclePassword@MyOracleServerIPaddress:port/MyOracleSIDorService  DATA=datafile.csv  CONTROL=controlfile.ctl  LOG=logfile.log  BAD=notloadedrows.bad

행운을 빕니다.

부터Oracle 18c인라인 외부 테이블을 사용할 수 있습니다.

인라인 외부 테이블을 사용하면 외부 테이블을 데이터 사전에서 영구 개체로 만들지 않고 SQL 문의 일부로 외부 테이블의 런타임 정의를 사용할 수 있습니다.

인라인 외부 테이블에서는 CREATE TABLE 문을 사용하여 외부 테이블을 작성하기 위해 사용되는 구문과 동일한 구문을 실행 시 SELECT 문에서 사용할 수 있습니다.쿼리 블록의 FROM 절에서 인라인 외부 테이블을 지정합니다.인라인 외부 테이블을 포함하는 쿼리에는 Join, Aggregation 등을 위한 일반 테이블도 포함될 수 있습니다.

INSERT INTO target_table(time_id, prod_id, quantity_sold, amount_sold)
SELECT time_id, prod_id, quantity_sold, amount_sold
FROM   EXTERNAL (   
    (time_id        DATE NOT NULL,     
     prod_id        INTEGER NOT NULL,
     quantity_sold  NUMBER(10,2),
     amount_sold    NUMBER(10,2))     
    TYPE ORACLE_LOADER     
    DEFAULT DIRECTORY data_dir1
    ACCESS PARAMETERS (
      RECORDS DELIMITED BY NEWLINE
      FIELDS TERMINATED BY '|')     
   LOCATION ('sales_9.csv') REJECT LIMIT UNLIMITED) sales_external;

언급URL : https://stackoverflow.com/questions/6198863/oracle-import-csv-file

반응형