我正在使用Oracle 12.2,并且想要读取txt / xls / etc-File(平面文件)。是否可以将文件内容读入pl / sql表(不是常规表)? 挑战在于,不要修改数据库,尤其是不要创建任何数据库对象。同时,我必须使用pl / sql中的平面文件的内容。这就是为什么我要读取平面文件并仅将其“作为表存储在内存中”的原因。 我正在使用sql * plus和sql developer。
我想做的是关于数据迁移的事情:从给定的数据库中读取数据并将其写入csv文件中,以便将这些文件导入新软件中。在执行此操作时,必须对某些数据进行“转换”(映射):我从旧软件中读取了一个值,并将其转换为新软件可以读取的值。这些映射文件是我正在谈论的平面文件。我(尚不存在)的plsql或sql代码应读取旧值,打开平面文件并获取具有旧值和新值的记录,然后使用新值并将其与其他数据一起存储在文件中。
答案 0 :(得分:0)
类似的方法可能会有所帮助,但是需要手动处理。
declare
f UTL_FILE.FILE_TYPE;
ldir varchar2(100) := 'DATA_PUMP_DIR';
lfile varchar2(100) := 'writefile.sql';
vtable m_code_tabletype := m_code_tabletype();
BEGIN
f := UTL_FILE.FOPEN(ldir,lfile,'R');
IF UTL_FILE.IS_OPEN(f) THEN
LOOP
BEGIN
UTL_FILE.GET_LINE(f,lfile);
IF lfile IS NULL THEN
EXIT;
END IF;
--do parsing
-- col1, col2, ...
vtable.extend;
vtable(vtable.count) := m_code_object(col1, col2, ...);
END;
END LOOP;
COMMIT;
END IF;
END;