通过平面文件将数据加载到Oracle数据库[重复]

mw3dktmi  于 2023-06-05  发布在  Oracle
关注(0)|答案(1)|浏览(250)

此问题已在此处有答案

sql oracle - import text file(1个答案)
6天前关闭
有没有一种方法可以将数据从平面文件加载到Oracle表中。我使用下面的python代码,但文件太大,脚本在一段时间后停止(由于丢失数据库连接)。

from tqdm import tqdm

insert_sty = "insert into MRSTY (CUI,TUI,STN,STY,ATUI,CVF) values (:0,:1,:2,:3,:4,:5)"
records=[]

file_path = "../umls_files/umls-2023AA-metathesaurus-full/2023AA/META/MRSTY.RRF"
num_lines = sum(1 for line in open(file_path))

with open(file_path, 'r') as f:
    for line in tqdm(f, total=num_lines, desc="Processing file"):
        line = line.strip()
        records.append(line.split("|"))

    for sublist in records:  
        if sublist:
            sublist.pop()
    
for i in tqdm(records, desc="Inserting records"):
    try:
        cur.execute(insert_sty,i)
        print ("record inserted")       
    except Exception as e:
        print (i)
        print("Error: ",str(e))
        
conn.commit()
yjghlzjz

yjghlzjz1#

如果您使用Oracle,我建议使用SQL*Loader。它是加载数据的实用程序 * 真的,真的很快 *。
简单地说,它是如何工作的:

  • 你有一个文件要加载
  • 如果PC上安装了Oracle数据库(或安装了Oracle客户端),则具有SQL*Loader实用程序
  • 创建一个控制文件(按照我发布的链接中描述的说明)
  • 它 * 指示 * 实用程序在哪里找到源数据,哪个数据库表是目标,是否有任何其他选项要包括,等等。
  • 运行它
  • 这是通过在操作系统命令提示符下调用sqlldr可执行文件来完成的
  • 这就是可能涉及Python的地方-只是为了调用实用程序
  • 等到它结束;检查日志文件以获取更多信息

查看here的简短概述。
P.S.忘了说:如果您发布了表描述并提供了几行示例数据,我们可以帮助编写控制文件并演示它是如何工作的。

相关问题