Может ли кто-нибудь помочь мне с хранимой процедурой plsql импорта файла .CSV
в таблицу Oracle? Хотелось создать процедуру, которая будет принимать имя файла и имя таблицы.Импорт CSV в базу данных Oracle
Примечание: Я использую UTF-8 формат файла
Может ли кто-нибудь помочь мне с хранимой процедурой plsql импорта файла .CSV
в таблицу Oracle? Хотелось создать процедуру, которая будет принимать имя файла и имя таблицы.Импорт CSV в базу данных Oracle
Примечание: Я использую UTF-8 формат файла
Вы должны создать каталог, и указать его в папку, где у вас есть файл. (Вам нужны разрешения на создание, что)
create or replace procedure get_file (p_dir varchar2, p_file varchar2)
is
line varchar2(4000);
v_file utl_file.file_type;
begin
v_file := utl_file.fopen(p_dir,p_file,'R');
loop
utl_file.get_line(v_file,line);
-- insert code here
dbms_output.put_line(line);
end loop;
exception when others then
-- The only way to know when we reach the end of the file is to get and exception
utl_file.fclose(v_file);
end;
Но у меня есть тип файла UTF8 – vasanti
И в чем проблема, основываясь на моем коде? –
Процедура PL/SQL, который хранится в базе данных не может работать на вашем рабочем столе. Вы можете
get_file
в одном из ответов)Я думаю, что путь УПРОЩЕННЫЙ является использование внешних таблиц. Это объект, который обрабатывает как таблицу, но он читает данные из файла. Для достижения этой цели вам нужна привилегия CREATE ANY DIRECTORY. Так сначала создать directort:
CREATE OR REPLACE DIRECTORY imp_data AS 'c:\tmp\';
или любой другой каталог на вашем сервере. Далее вам необходимо предоставить его
GRANT READ, WRITE ON DIRECTORY imp_data TO PUBLIC;
теперь лучшая часть :)
CREATE TABLE imp_data (
ID NUMBER(20),
NAME VARCHAR2(50),
CITY VARCHAR2(200)
)
ORGANIZATION EXTERNAL
(TYPE ORACLE_LOADER --this is the read-file driver
DEFAULT DIRECTORY imp_data
ACCESS PARAMETERS
RECORDS DELIMITED BY NEWLINE
BADFILE 'bad'
LOGFILE 'log'
FIELDS TERMINATED BY ',' -- CSV terminate mark
(ID, NAME, CITY)) -- the order of the columns in the file
LOCATION ('dane.csv')) -- name of file
PARALLEL 5
REJECT LIMIT 200; -- numbers of bad row before break import
ли файл на сервере базы данных (или доступный для него), или на каком-то рабочем столе? –
Это только на рабочем столе. – vasanti