shell封装的oracle sqlload便利加载数据小脚本

本文介绍了一个使用shell封装的Oracle SQL*Loader脚本,用于便捷地加载大量数据。该脚本避免了手动创建控制文件的繁琐步骤,提高效率。通过输入表名、分隔符和文件名即可运行,适用于大数据量的CSV或其他文本文件入库。

shell封装oracle sqlload

背景

从事于数据方面工作的小伙伴们,在工作做经常会入库一些文件,比如excel,CSV,文本文件。很多小伙伴们都是采用plsql或者其他工具软件,通过粘贴复制到表中,或者工具提供的文本导入方法。对于数据量一大,几十万甚至千万级别的数据量,工具多半会很慢或者奔溃。所以这里提供一下本人在工作中解决该办法的思路及脚本。

功能简介

本脚本的核心是通过oracle提供的sqldr加载数据。
关于sqldr用法详解参见官方文档:
链接: link.
通过运行该脚本,输入三个参数:1.表名 2.分隔符 3.入库文件名
oracle sqldr 中最麻烦的就是需要手工制作控制文件,该脚本最大的好处就是无需手工建立控制文件,自动生成控制文件。

用法

1.首先建立与文件字段对应的后台数据表。
2.把文件做好对应的分隔符,放入服务器中。
3.上传该脚本,改下对应的连接数据库SID,USER,PASSWORD.
4.运行该脚本:sh sqlload_data_file.sh tablename separative_sign file_name

代码如下:

#!/bin/sh
################################################################################
# SHELLNAME: sqlload_data_file.sh
# VERSION:  V01.00.xxx
# AUTHOR:   JIYU
# DATE:20161107  V01.00.000  JIYU
################################################################################
. ~/.bash_profile
progdir=/app/jy/shell                      #shell目录
ora_cfg=/app/jy/shell/db_cfg.ini           #oracle密码配置文件
logfile
Oracle数据库中,可以使用Shell脚本封装SQL语句,以便批量执行SQL语句或自动化执行SQL语句的任务。以下是一个使用Shell脚本封装Oracle SQL的示例: ```bash #!/bin/bash # 定义变量 DB_HOST="localhost" DB_PORT="1521" DB_SID="orcl" DB_USER="scott" DB_PASS="tiger" # 执行SQL语句 sqlplus -S $DB_USER/$DB_PASS@$DB_HOST:$DB_PORT/$DB_SID << EOF -- 创建表 CREATE TABLE employees ( employee_id NUMBER(6) NOT NULL, first_name VARCHAR2(20) NOT NULL, last_name VARCHAR2(25) NOT NULL, email VARCHAR2(25), phone_number VARCHAR2(20), hire_date DATE NOT NULL, job_id VARCHAR2(10) NOT NULL, salary NUMBER(8,2), commission_pct NUMBER(2,2), manager_id NUMBER(6), department_id NUMBER(4) ); -- 插入数据 INSERT INTO employees VALUES (100, 'Steven', 'King', 'steven.king@example.com', '515.123.4567', TO_DATE('1987-06-17', 'YYYY-MM-DD'), 'AD_PRES', 24000, NULL, NULL, 90); INSERT INTO employees VALUES (101, 'Neena', 'Kochhar', 'neena.kochhar@example.com', '515.123.4568', TO_DATE('1989-09-21', 'YYYY-MM-DD'), 'AD_VP', 17000, NULL, 100, 90); INSERT INTO employees VALUES (102, 'Lex', 'De Haan', 'lex.dehaan@example.com', '515.123.4569', TO_DATE('1993-01-13', 'YYYY-MM-DD'), 'AD_VP', 17000, NULL, 100, 90); -- 查询数据 SELECT * FROM employees; -- 结束SQL语句 EOF ``` 在该脚本中,通过使用“<< EOF”和“EOF”来封装SQL语句。在“<< EOF”后面的所有内容都将被视为SQL语句,直到遇到“EOF”为止。在这个例子中,我们连接到名为“orcl”的Oracle数据库实例,并执行一个简单的SQL语句,以创建一个名为“employees”的表,并插入三行数据。然后,我们使用SELECT语句查询了表中的所有数据。您可以根据需要修改SQL语句以执行不同的任务。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值