Tệp CSV là tệp được phân cách bằng dấu phẩy, trong đó các trường được phân tách bằng dấu phẩy. Trong bài viết này, tôi đưa ra một ví dụ để nhập tệp CSV vào bảng oracle bằng cách sử dụng thủ tục được lưu trữ. Thủ tục được lưu trữ trong Oracle là một đơn vị chương trình PL / SQL có thể là một đơn vị độc lập hoặc trong gói cơ sở dữ liệu.
Bạn phải có một đối tượng thư mục trong cơ sở dữ liệu Oracle tham chiếu đến đường dẫn máy chủ mà tệp được lưu trữ. Trong ví dụ dưới đây, tôi đang sử dụng tên đối tượng thư mục là CSV_DIR và tên thủ tục là read_csv. Đồng thời tạo một hàm GetString trong thủ tục read_csv để lấy từng chuỗi được phân tách .
Tải tệp CSV vào Bảng Oracle bằng Quy trình PL / SQL
TẠO HOẶC THAY THẾ THỦ TỤC read_csvISl_file_type UTL_FILE.file_type; l_string VARCHAR2 (32765); TYPE Fieldvalue LÀ BẢNG VARCHAR2 (4000) INDEX BY BINARY_INTEGER; t_field IN Fieldvalue; FUNCTION GetString_String , Dấu phân cách IN VARCHAR2 DEFAULT ',') RETURN VARCHAR2ISiPtrEnd PLS_INTEGER:=0; iPtrStart PLS_INTEGER:=0; vcSourceStrCopy VARCHAR2 (4000):=Source_string; BEGINIF UnTerminatTHENvcSourceStrCopy :trCopy || Dấu phân cách; END IF; IF Field_Position> 1THENiPtrStart:=INSTR (vcSourceStrCopy, Delimiter, 1, Field_Position - 1) + LENGTH (Dấu phân cách); ELSEiPtrStart:=1; END IF; iPtrEnd:=INSTR (vcSourceStrCopy); RETURN SUBSTR (vcSourceStrCopy, iPtrStart, (iPtrEnd - iPtrStart)); END GetString; BEGINl_file_type:=UTL_FILE.Fopen ('CSV_DIR', 'abc.csv', 'r'); LOOPUTL_FILE.Gstring :=l_string || ','; CHO n TRONG 1 .. REGEXP_COUNT (l_string, ',') LOOPt_field (n):=Getstring (l_string, n, FALSE, ','); END LOOP; CHÈN VÀO EMP (EMPNO, ENAME, JOB, GIÁ TRỊ MGR, HIREDATE, SAL, COMM, DEPTNO) (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 KHÁCSTHENIF UTL_FILE.is_open (l_file_type) THENUTL_FILE.Fclose (l_file_type) END; ;Xin lưu ý rằng bạn phải nghiên cứu tệp CSV của mình để ánh xạ bảng mục tiêu một cách chính xác. Đồng thời xử lý định dạng ngày cho các trường ngày, theo định dạng dữ liệu ngày CSV của bạn.