1,先下载安装包
https://www.oracle.com/technetwork/topics/linuxx86-64soft-092277.html
下载对应版本的basic和sqlplus的安装包
2,开始安装
rpm -ivh basic包名称
rpm -ivh sqlplus包名称
rpm -ivh devel包名称
rpm -ivh jdbc包名称
3,设置环境变量
先确认下oracle目录是否存在 /usr/lib/oracle/11.2/client64/,不同版本目录不一样
vim ~/.bash_profile
添加:
export ORACLE_HOME=/usr/lib/oracle/11.2/client64
export PATH=$ORACLE_HOME/bin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib
export TNS_ADMIN=$ORACLE_HOME/network/admin
4,安装sqlldr
从完成的客户端找到sqlldr和ulus.msb, 大致路径在:
/OracleHome/db/product/11gR2/bin/sqlldr
/OracleHome/db/product/11gR2/rdbms/mesg/ulus.msb
复制到:
$ORACLE_HOME/bin/sqlldr
$ORACLE_HOME/rdbms/mesg/ulus.msb
5,使用sqlplus command
sqlplus "用户名/密码@host:port/sid"
在shell中调用sqlplus方法:
sql=$1
sqlplus -s "UNION_LOAN/guohuaiGUO4056&@192.168.223.21:49161/xe" << EOF
whenever sqlerror exit sql.sqlcode;
set heading off
set echo off
set pagesize 0
set linesize 1000
set trimspool on
set feedback off
${sql}
exit;
EOF
6,使用sql loader
新建表:
CREATE TABLE my_table
(id NUMBER,
author VARCHAR2(30),
created DATE
);
新建loader.ctl
LOAD DATA
CHARACTERSET UTF8
INFILE 'loader.txt'
INTO TABLE my_table
FIELDS TERMINATED BY ','
( id CHAR(10),
author CHAR(30),
created DATE "YYYY-MM-DD" ":created"
)
新建loader.txt
1,John Smith,2015-04-29
2,Pete Jones,2013-01-31
开始导入
sqlldr "用户名/密码@host:port/sid" control=loader.ctl
响应:Commit point reached - logical record count 2
完成。
tips:
1,如果遇到sqlldr: symbol lookup error: sqlldr: undefined symbol: sldext那说明你安装的oracle client与sqlldr的版本不一致,下载对应的oracle client就行。
2,如果sqlloader需要跳过第一行,可以在ctl内load前一行加上OPTIONS(SKIP=1)
3,如果想loader常量值,可以改为column_name constant "abc",
4,如果想loader执行一条sql或函数,可以改成 column_name expression "sys_guid()"
5,sqlloader末尾字段换行符替换方法:column_name CHAR(32) \"regexp_replace(:column_name,'[[:space:]]','')\",
6,如果loader导入的文件中有空列,可以才ctl中加上TRAILING NULLCOLS