在PL/SQL中,可以使用以下的步驟來導入CSV數據:
CREATE TABLE my_table (
column1 VARCHAR2(100),
column2 NUMBER,
column3 DATE
);
UTL_FILE
包中的FOPEN
函數打開CSV文件,并將其文件句柄存儲起來。DECLARE
file_handle UTL_FILE.FILE_TYPE;
directory VARCHAR2(100) := 'DIRECTORY_NAME';
file_name VARCHAR2(100) := 'FILE_NAME.csv';
BEGIN
file_handle := UTL_FILE.FOPEN(directory, file_name, 'R');
...
END;
在DIRECTORY_NAME
中指定CSV文件所在的目錄,FILE_NAME.csv
是CSV文件的名稱。
UTL_FILE
包中的GET_LINE
函數逐行讀取CSV文件數據,并使用適當的分隔符解析每行數據。DECLARE
file_handle UTL_FILE.FILE_TYPE;
directory VARCHAR2(100) := 'DIRECTORY_NAME';
file_name VARCHAR2(100) := 'FILE_NAME.csv';
line_text VARCHAR2(4000);
column1_value VARCHAR2(100);
column2_value NUMBER;
column3_value DATE;
BEGIN
file_handle := UTL_FILE.FOPEN(directory, file_name, 'R');
LOOP
UTL_FILE.GET_LINE(file_handle, line_text);
-- 解析每行數據
column1_value := REGEXP_SUBSTR(line_text, '[^,]+', 1, 1);
column2_value := TO_NUMBER(REGEXP_SUBSTR(line_text, '[^,]+', 1, 2));
column3_value := TO_DATE(REGEXP_SUBSTR(line_text, '[^,]+', 1, 3), 'YYYY-MM-DD');
-- 插入數據到表中
INSERT INTO my_table (column1, column2, column3)
VALUES (column1_value, column2_value, column3_value);
END LOOP;
UTL_FILE.FCLOSE(file_handle);
EXCEPTION
WHEN NO_DATA_FOUND THEN
UTL_FILE.FCLOSE(file_handle);
END;
在此示例中,使用逗號作為CSV文件的分隔符,可以根據實際情況修改。
UTL_FILE.FCLOSE(file_handle);
SELECT * FROM my_table;
注意:在使用PL/SQL導入CSV數據時,需要有相應的權限來訪問文件系統中的目錄和文件。