Soubor CSV je soubor oddělený čárkami, ve kterém jsou pole oddělena čárkou. V tomto článku uvádím příklad importu souboru CSV do tabulky oracle pomocí uložené procedury. Uložená procedura v Oracle je programová jednotka PL/SQL, která může být samostatná nebo v databázovém balíčku.
V databázi Oracle musíte mít objekt adresáře odkazující na cestu k serveru, na kterém je soubor uložen. V níže uvedeném příkladu používám název objektu adresáře jako CSV_DIR a název procedury je read_csv. Také byla vytvořena funkce GetString v proceduře read_csv pro získání odděleného řetězce jeden po druhém .
Načtení souboru CSV do tabulky Oracle pomocí procedury PL/SQL
POSTUP VYTVOŘENÍ NEBO NAHRAZENÍ read_csvISl_file_type UTL_FILE.file_type;l_string VARCHAR2 (32765);TYPE Hodnota pole JE TABLE OF VARCHAR2 (4000)INDEX PODLE BINARY_INTEGER; t_pole hodnota_INTEGER_INTERBO; ,Delimiter IN VARCHAR2 DEFAULT ',')RETURN VARCHAR2ISiPtrEnd PLS_INTEGER :=0;iPtrStart PLS_INTEGER :=0;vcSourceStrCopy VARCHAR2 (4000) :=Source_string;=BEGINcSourStrceCopyCopy |c| Delimiter;END IF;IF Field_Position> 1THENiPtrStart :=INSTR (vcSourceStrCopy,Delimiter,1,Field_Position - 1)+ LENGTH (Delimiter);ELSEiPtrStart :=1;END IF;iPtrEnd :=INSTR_Copy,Delimiter;RETURN SUBSTR (vcSourceStrCopy, iPtrStart, (iPtrEnd - iPtrStart));END GetString;BEGINl_file_type :=UTL_FILE.Fopen ('CSV_DIR', 'abc.csv', 'r');LOOPUTL_FILE.l_filing_string :=l_string || ',';FOR n IN 1 .. REGEXP_COUNT (l_string, ',')LOOPt_field (n) :=Getstring (l_string,n,FALSE,',');END LOOP;INSERT INTO EMP (EMPNO,ENAME,JOB, MGR,HIREDATE,SAL,COMM,DEPTNO)VALUES (t_field (1),t_field (2),t_field (3),t_field (4),TO_DATE (t_field (5), 'dd/mm/yyyy'), t_field ( 6),t_field (7),t_field (8));END LOOP;UTL_FILE.Fclose (l_file_type);COMMIT;EXCEPTIONWHEN OTHERSTHENIF UTL_FILE.is_open (l_file_type)THENUTL_FILE.Fclose (l_file_type);ENDpre>IF;END; Vezměte prosím na vědomí, že musíte prostudovat svůj soubor CSV, abyste správně namapovali cílovou tabulku. Zpracujte také formát data pro datová pole podle formátu dat CSV.