你的问题非常简单:
1、存储过程设置为只读取一个文件,存储过程设置传入两个参数,为文件路径和文件名。
2、写个脚本,列出文件名,把这些文件一个一个的送给存储过程处理。
给你个读文件存储过程存储过程:
PROCEDURE read_file(loc_in IN VARCHAR2, file_in IN VARCHAR2)IS
file_handle UTL_FILE.FILE_TYPE
NewLine VARCHAR2(1024)
v_NBRCH TEST.NBRCH%TYPE
v_NACNT TEST.NACNT%TYPE
v_ONAME TEST.ONAME%TYPE
BEGIN
file_handle := UTL_FILE.FOPEN (loc_in, file_in, 'R')
LOOP
BEGIN
UTL_FILE.GET_LINE(file_handle,NewLine)
EXCEPTION
WHEN NO_DATA_FOUND THEN
--跳出系统出口
UTL_FILE.FCLOSE(file_handle)
EXIT
WHEN OTHERS THEN
UTL_FILE.FCLOSE(file_handle)
RETURN
END
--这里是处理读出一行数据,分离出每个域到你的变量里面去。
v_NBRCH:=TO_NUMBER(SUBSTR(NewLine,1,7))
v_NACNT:=TO_NUMBER(SUBSTR(NewLine,9,9))
v_ONAME:=SUBSTR(NewLine,19,10)
--插入数据库
INSERT INTO TEST(NBRCH,NACNT,ONAME) VALUES(v_NBRCH,v_ROWN,v_ONAME)
COMMIT
END LOOP
END
如果运行读不到数据或出错,请使用Oracle dba登录,初始化系统变量,然后重启Oracle
ALTER SYSTEM SET UTL_FILE_DIR=*上传的 csv 应该保存成 utf-8 格式的,如果你没有其他编辑工具,可以另存完了之后,用记事本打开 csv 文件,在另存为对话框编码那里选择 utf-8 ,保存,然后再上传。
一、文件路径报错因为在python之中文件路径都是以字符串类型出现的,所以在字符串对象的编写语法本身没有错误时,那么出现报错的唯一原因就是这个文件路径找不到文件。这种问题主要经常出现在已经发布部署到服务器上的python程序,因为在开发时很多时候都是用绝对路径来读取文件的,环境改变之后从磁盘根目录读取的绝对路径就是无法使用了。
二、解决方法
那么正确的做事实际上就是先导入os模块,然后调用getcwd()方法查看当前python程序,也就是py脚本文件处在哪个文件路径之中,代码示例如下所示:
import os
os.getcwd()
print(os.getcwd())
然后再打开文件夹查看一下所要读取的csv文件在哪个文件目录,然后在文件资源管理器内打开csv文件所在的文件目录并将其复制后粘贴到python文件所在的同级目录下,接下来就可以使用绝对不会出错的相对路径来读取该csv文件了。只需要写上csv文件的名称就可以来将其在python程序内打开并读取,代码示例如下所示:
import pandas as pd
train = pd.read_csv
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)