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
'programing' 카테고리의 다른 글
JSONPath에서 문자열로 필터링하는 방법 (0) | 2023.03.27 |
---|---|
Next.js: 문서가 정의되지 않았습니다. (0) | 2023.03.27 |
모든 ACF 필드를 Wordpress REST API에 표시하는 방법 페이지와 사용자 지정 포스트타이프 (0) | 2023.03.27 |
내보낸 릴레이 컨테이너 입력 방법 (0) | 2023.03.27 |
Angular & Express를 사용하여 사용자를 로그인하는 적절한 방법은 무엇입니까? (0) | 2023.03.27 |