大数据培训之旅——Oracle-5(sqlldr,参数文件,字符集,手工建库)

    对于我们的oracle来说,数据就是命根子……这些数据除了通过前端过来,还需要我们手动录入,但是录入会累死人的,于是我们可以利用命令来导入有规律的数据,比如我们来看看如何从Excel中导入数据。

    来说说第一种:这个是Excel的技术了,就是自己写公式,这没法具体说,不然就变成了Excel教程了,大家去看看Excel怎么写公式就可以了,这里给个思路,用公式功能批量生成insert语句比如:= "INSERT INTO PERSON(PERSON_ID, PERSON_NAME,PERSON_SEX) VALUES('" & B1 & "', '" & C1 & "', '" & D1 & "');" 之后就可以在执行sql语句了。

    来说说第二种:同样先是Excel技术,我们把Excel数据来另存为txt文档,记得选择制表符分隔

——————————————————————————————————————————————————————

    这样的话就会导出以tab键分隔的文本文档,我们来看看如何导入到库中。首先我们需要把导出的txt文档传到虚拟机中,这种小文件,我们在安装vmtools后可以直接拖拽进去,不过这里说一个SecureCRT的功能。

——————————————————————————————————————————————————————

——————————————————————————————————————————————————————

    之后我们在虚拟机中vi input.ctl,之后写上一些东西:

——————————————————————————————————————————————————————

——————————————————————————————————————————————————————

    之后再去查询表就可以查到了。

    第三种是用Excel将文件另存为csv文件,之后上传导入,不过我们要修改修改ctl文件:

    load data 
    infile 'test3.csv'
    Append into TABLE test
    FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'       源数据以逗号分隔,后面半句是因为oracle只有number没有int所以这样设置
    TRAILING NULLCOLS                                                                      遇到空行跳过
    (ID INTEGER EXTERNAL TERMINATED BY ',',                               加上上半句将数据转换成Integer类型
    USER_NAME char(30),
    LOGIN_CODE char(30))

    之后我们使用:

     sqlldr+用户名/密码+control = 控制文件+log=日志文件 skip=跳过行数 direct = y 路径加载加快抽取速度

     sqlldr scott/gongao control =intput.ctl log=input.log skip=1 direct = y      因为csv文件第一行是表头所以跳过

    这种方法有个好处是如果不满足抽取规则会生成一个bad文件,可以看看那些不符合规则。

    最后一种就是直接使用可视化工具粘贴,比如PL/SQL Developer,可视化工具就不仔细说了,代码才是王道

    之后又是长篇大论了,关于oracle的配置文件,pfile和spfile:数据库启动到nomount会加载spfile,spfile文件位置:$ORACLE_HOME/dbs,命名规则是:spfile$SID.ora,当然这里还有一个文件pfile,这是spfile的备胎,spfile不好用就会自动读pfile,如果都不好用就会报错了,spfile这东西同样是二进制文件,vi是看不懂的而且无法修改,一般用alter system  set 参数=值 scope=both/spfile来修改,而pfile可以直接vi修改,当然两者是可以互相生成的:创建pfile:create pfile from spfile; 创建spfile:create spfile from pfile;

    来看看一些配置文件常出的问题:

——————————————————————————————————————————————————————

——————————————————————————————————————————————————————

    这就是简单的参数文件错误,以及如何应对。还记得我们当初建库的时候,我们没有修改字符集么,这样会导致表中无法显示中文,我们来看看

——————————————————————————————————————————————————————

——————————————————————————————————————————————————————

——————————————————————————————————————————————————————

——————————————————————————————————————————————————————

——————————————————————————————————————————————————————

——————————————————————————————————————————————————————

    中文我们可以显示了,下面就得说说手工建库了,毕竟不是所有的服务器都会安装图形界面的。因为涉及到删库以及一系列复杂过程,就不图片显示了。首先需要手工删库:

SQL> shutdown immediate;
SQL> startup mount;
SQL> alter system enable restricted session;(静默状态,DBA能安全地执行某些操作,这些操作要求从当前非DBA用户中隔离出来操作。)

drop database;

cd $ORACLE_BASE/oradata

mkdir test

手工建库

1.修改环境变量重设sid
[oracle@sq ~]$ vi ~/.bash_profile
ORACLE_SID=test

[oracle@sq ~]$source ~/.bash_profile 

2.建立初始化文件
[oracle@sq ~]$ vi $ORACLE_HOME/dbs/init$ORACLE_SID.ora
control_files = (/oracle/app/oradata/test/control1.ctl,/oracle/app/oradata/test/control2.ctl,/oracle/app/oradata/test/control3.ctl)
undo_management = AUTO
undo_tablespace = UNDOTBS1
db_name = test
db_unique_name = test
db_block_size = 8192
sga_max_size = 320M
sga_target = 320M

3.建立密码文件
[oracle@sq ~]$ orapwd file=$ORACLE_HOME/dbs/orapw$ORACLE_SID password=lipengfei force=y

4.建立所需目录
mkdir -p $ORACLE_BASE/admin/$ORACLE_SID/adump
mkdir -p $ORACLE_BASE/admin/$ORACLE_SID/bdump
mkdir -p $ORACLE_BASE/admin/$ORACLE_SID/pfile
mkdir -p $ORACLE_BASE/admin/$ORACLE_SID/cdump
mkdir -p $ORACLE_BASE/admin/$ORACLE_SID/dpdump
mkdir -p $ORACLE_BASE/admin/$ORACLE_SID/udump
[oracle@sq ~]$source ~/.bash_profile 

5.建立spfile
SQL> startup nomount 
SQL> create spfile from pfile;

6.建立数据库
[oracle@sq ~]$ vi /home/oracle/createDB.sql

内容为:
create database test
logfile group 1 ('$ORACLE_BASE/oradata/test/redo01.log') size 100m,
        group 2 ('$ORACLE_BASE/oradata/test/redo02.log') size 100m,
        group 3 ('$ORACLE_BASE/oradata/test/redo03.log') size 100m
maxlogfiles 10
maxlogmembers 5
maxloghistory 5
maxdatafiles 100
maxinstances 1
character set zhs16gbk
national character set al16utf16
 datafile '$ORACLE_BASE/oradata/test/system01.dbf' size 350m reuse autoextend on next 1m maxsize unlimited extent management local
sysaux datafile '$ORACLE_BASE/oradata/sysaux01.dbf' size 350m reuse autoextend on next 1m maxsize unlimited
default temporary tablespace temp01 tempfile '$ORACLE_BASE/oradata/test/temp01.dbf' size 50m reuse autoextend on next 1m maxsize 500m
undo tablespace undotbs1 datafile '$ORACLE_BASE/oradata/test/undotbs01.dbf' size 500m reuse autoextend on next 1m maxsize unlimited;

7.执行建库sql脚本
SQL> @/home/oracle/createDB.sql

8.查看dbf、log、ctl文件是否生成
cd /oracle/app/oradata/test

ls 查看有文件没

9.重新创建数据字典视图、存储过程包
SQL> @/oracle/app/oracle/product/10.2.0/db_1/rdbms/admin/catalog.sql(重新创建数据字典视图)

SQL> @/oracle/app/oracle/product/10.2.0/db_1/rdbms/admin/catproc.sql(重新创建存储过程包)

——————————————————————————————————————————————————————

    这就是手工建库的过程了,或许大家会有疑问为啥图片越来越少……其实有两种原因,一是大家也操作这么多了,已经了解了大概操作,另一种就是我比较着急找工作,想要赶紧从海量数据步入大数据,因为大数据就业的话和Oracle有关的也就是数据抽取和SQL了,下一篇应该介绍MySQL for Linux包括备份,基础操作,读写分离,ab复制,但是我决定跳过,直接来Oracle体系结构

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值