我有一个问题如何将.csv文件导入Oracle Forms应用程序。 我们在Oracle 12c数据库上使用Oracle Forms 11g。
现在我们要使用Forms应用程序导入.csv文件,因此我们的客户可以导入此文件并将数据写入数据库。
我的计划是创建一个应用程序,用户可以使用filechooser导入.csv文件。将读取.csv中的数据,并且输出会向用户显示此应用程序中的数据。然后用户应该能够通过按钮将其保存到数据库中。
我已经尝试了几次搜索,但还没有找到解决此类问题的正确方法。我发现的唯一解决方案是直接将.csv文件导入数据库,但不能通过Oracle Forms直接导入
甚至可以在Oracle Forms中加载.csv文件吗?
如果有人有一个好的解决方案或任何其他可能有用的东西,我会感激不尽。
答案 0 :(得分:1)
我现在找到了合适的解决方案。也许我能做得更好,但这对我有帮助。
我找到了以下博客:http://tfathy.blogspot.de/2009/03/reading-from-file.html
该代码100%通过复制和粘贴工作,并帮助我从现在开始完成任务。
也许它也可以帮助其他人。
这是解决方案代码:
Reading From File
March 19, 2009
--------------------------------------------------
Declare
vfilename varchar2(500);
in_file Client_Text_IO.File_Type;
linebuf VARCHAR2(1800);
BEGIN
vfilename := client_get_file_name('c:/temp/', File_Filter=>'Comma Dialimeted Files (*.csv)|*.csv|');
in_file := client_Text_IO.Fopen(vfilename, 'r');
GO_BLOCK('Emp');
FIRST_RECORD;
LOOP
Client_Text_IO.Get_Line(in_file, linebuf);
p_output_line(linebuf);
Client_Text_IO.New_Line;
Next_record;
END LOOP;
FIRST_RECORD;
EXCEPTION
WHEN no_data_found THEN
Client_Text_IO.Put_Line('Closing the file...');
Client_Text_IO.Fclose(in_file);
END;
-------------------------------------------------------
PROCEDURE p_output_line(p_line varchar2) IS
vLINE VARCHAR2(4000);
vVALUE VARCHAR2(1000);
vCOMMA_COUNT NUMBER;
vREPORT_DATE DATE;
BEGIN
vLINE := p_line;
vCOMMA_COUNT := LENGTH(vLINE)- LENGTH(REPLACE(vLINE,',','')); -- COUNT THE NUMBER OF COMMAS
FOR I IN 1.. vCOMMA_COUNT+1 LOOP
vVALUE := SUBSTR(vLINE,1,INSTR(vLINE,',')-1); -- IF vLINE = 123,ABC,9877 THEN VVALUE WILL BE 123
IF vVALUE IS NULL THEN
vVALUE := vLINE;
END IF;
vLINE := SUBSTR(vLINE,INSTR(vLINE,',')+1) ; -- CHANGE 123,ABC,9877 TO BE ABC,9877
IF I = 1 THEN
:DATA.BMK_NAME := vVALUE;
ELSIF I = 2 THEN
vREPORT_DATE := last_day(to_date(vVALUE,'dd-mm-yyyy'));
:DATA.REPORT_DATE := vREPORT_DATE;
ELSIF I = 3 THEN
:DATA.BMK_RETURN := to_number(vVALUE);
END IF;
END LOOP;
EXCEPTION
WHEN NO_DATA_FOUND THEN
MESSAGE('Please Check the data type is appropriate on you excel file');
MESSAGE('Please Check the data type is appropriate on you excel file');
END;
-----------------------------------------------------------------------
-- notes
1- you must install webutil version 106 or later
2- make sure that you attached and compiled the webutill.pll scucessfuly
答案 1 :(得分:0)
您可以使用webutil显示文件选择器以选择文件并将其上传到应用程序服务器。如果在应用程序服务器和数据库服务器之间使用共享目录,则可以使用外部表向用户显示文件的输入。然后在按钮之后,您只需将外部表中的数据插入另一个表中。