oracle 从本地服务器读取CSV文件的数据,插入到数据表里。数据文件可能是多个比如table1_2016-06-03.csv

oracle 从本地服务器读取CSV文件的数据,插入到数据表里。数据文件可能是多个比如table1_2016-06-03.csv,第1张

你的问题非常简单:

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


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/721181.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-08-09
下一篇2023-08-09

发表评论

登录后才能评论

评论列表(0条)

    保存