CSV-fil er en kommasepareret fil, hvor felter er adskilt af komma. I denne artikel giver jeg et eksempel på at importere CSV-fil til Oracle-tabellen ved hjælp af lagret procedure. Den lagrede procedure i Oracle er en PL/SQL-programenhed, som kan være en selvstændig eller i databasepakke.
Du skal have et biblioteksobjekt i Oracle-databasen, der henviser til serverstien, hvor filen er gemt. I eksemplet nedenfor bruger jeg mappeobjektnavn som CSV_DIR og procedurenavnet er read_csv. Oprettede også en funktion GetString i proceduren read_csv for at få den afgrænsede streng én efter én .
Indlæsning af CSV-fil i Oracle Table ved hjælp af PL/SQL-procedure
OPRET ELLER ERSTAT PROCEDURE read_csvISl_file_type UTL_FILE.file_type;l_string VARCHAR2 (32765);TYPE Feltværdi ER TABLE OF VARCHAR2 (4000)INDEX BY BINARY_INTEGER;t_field Get Feltværdi INFA.F.U.N.. INFA.Felt..........streng...........n.....n...min. . . ,Afgrænser I VARCHAR2 DEFAULT ',') Delimiter;END IF;IF Field_Position> 1THENiPtrStart :=INSTR (vcSourceStrCopy,Delimiter,1,Field_Position - 1)+ LENGTH (Delimiter);ELSEiPtrStart :=1;END IF;iPtrEnd :=INSTR (vcSourcePo1s,Field_StreetCopy);RETURN SUBSTR (vcSourceStrCopy, iPtrStart, (iPtrEnd - iPtrStart));END GetString;BEGINl_file_type :=UTL_FILE.Fopen ('CSV_DIR', 'abc.csv', 'r');LOOPUTL_FILE.Getfile_Line (,l_string_Line); :=l_streng || ',';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);END>IF;END;Bemærk venligst, at du skal studere din CSV-fil for at kortlægge måltabellen korrekt. Håndter også datoformatet for datofelter i henhold til dit CSV-datodataformat.
Sådan opretter du en procedure inde i en pakke i Oracle Eksporter data til Excel fra Oracle Table ved hjælp af PL SQL
MySQL-replikering og GTID-baseret failover - et dybt dyk ned i fejlagtige transaktioner
Hvordan tilføjer du en redigeringsknap til hver række i en rapport i Oracle APEX?
Kan ikke oprette forbindelse til localDB i VS2012 – Der opstod en netværksrelateret eller instansspecifik fejl under oprettelse af en forbindelse til SQL Server...
En datamodel for handel med aktier, fonde og kryptovalutaer