SQL*Loader基本加载

基本准备工作

*:此处采用控制文件与数据文件分离的方法.

新建一个控制文件(名称与类型可任意,此处默认使用:ldr_case1.ctl):

1
2
3
4
5
6
LOAD DATA
INFILE oracledata.data
INTO TABLE BONUS
FIELDS TERMINATED BY ","
(ENAME,JOB,SAL)
BEGINDATA

详细:

  1. 开始部分,说明是要加载数据.
  2. 加载文件的地址,后面可以是相对或者绝对地址.[INFILE *]也可以
  3. [APPEND][REPLACE][INSERT][TRUNCATE] INTO tbl_name :第一个参数是追加到现有数据后面;第二个参数是替换掉现有数据,也就是先DELETE表中的数据,然后再进行INSERT操作;第三个参数是默认使用的,表必须为空,如果表非空的话,就会报错误;第四个参数类似于[REPLACE]参数,不同的是,这个参数使用TRUNCATE进行删除,然后再INSERT.
  4. 设置分隔符,此处较为复杂,下次继续分析.
  5. 表中的列名,无序,但名称必须对应.
  6. 以下为待加载数据,仅当第二行为INFILE * 时有效.

sqlldr
image-1820

示例部分

示例[控制文件与数据文件使用同一个文件]:

1
2
3
4
5
6
7
8
9
10
11
LOAD DATA
INFILE *
INTO TABLE BONUS
FIELDS TERMINATED BY ","
(ENAME,JOB,SAL)
BEGINDATA

TES1T,TE1STE,1234
TE2ST,TE41STE,1234
TES7T,TES4TE,1234
TE52ST,TES41TE,1234

示例[控制文件与数据文件分离[通常这样使用,比较方便]]:

控制文件:

1
2
3
4
5
6
LOAD DATA
INFILE oracledata.data
INTO TABLE
FIELDS TERMINATED BY ","
(ENAME,JOB,SAL)
BEGINDATA

数据文件:

1
2
3
4
TES1T,TE1STE,1234
TE2ST,TE41STE,1234
TES7T,TES4TE,1234
TE52ST,TES41TE,1234

执行与产生的文件

然后再终端执行如下命令:
请先确认,Oracle数据库已经运行,表已经创建!

1
2
3
4
5
sqlldr user/password CONTROL=ldr_case1.ctl

//user = 用户名
//password = 密码
//CONTROL = 控制文件路径

执行完命令,会产生一个与控制文件同名的日志文件(.log结尾),错误文件(.bad,如果dba没有修改的),如果你设定了废弃文件(.dsc结尾),那么还会产生废弃文件.

VMware安装Redhat Server6.4,之后安装Oracle 11GR2视频教程

PS:新手录制,有问题请留言告知.

官方的安装教程

官方文档:database/doc/index.htm ,用浏览器打开就可以看了.

  1. 打开页面,右侧找到”Database Installation Guide “单击右侧的HTML
  2. 参照上面的步骤,可以看看[视频教程不是按照官方教程来安装的]
  3. 下面的视频教程,讲到了配置监听

Oracle LOGO
image-1807

只是一点提示

昨天花了半下午终于录制完成了,直接实际操作的,其中需要以下几个软件:

  • VMware 9.0 [英文版][32/64:依你的操作系统而定]
  • Redhat Server 6.4 [英文版][64位]
  • Oracle安装镜像[英文版][64位]
  • Winscp [用于从Windows连接到Linux]

我的配置是:

  • Windows 8 [X64]
  • 8G内存
  • 1T硬盘[分配给Redhat的是50Gm,用于虚拟机的是一个单独的分区]
  • Inter(R) Pentium(R) CPU G630 @ 2.70GHZ

其余部分在视频里面都有介绍,如果有问题,欢迎评论指正.

下载地址

视频下载地址[用屏幕录像专家录制的,总大小:约为200M,国内115网盘]:

录像4[.exe文件,可直接观看]

录像5[.exe文件,可直接观看]

录像6[.exe文件,可直接观看]

录像5[.exe文件,可直接观看]

前面试录了3个,后来被删除了.后面有时间继续录制.

Java连接MySQL简化版

网上有很多Java连接MySQL的代码。现在奉上简化版本(仅测试连接,不创建表)

MySQL数据库图标
image-1708

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import java.sql.Connection;
import java.sql.DriverManager;

/**
 * 连接MySQL范本.
 * @author Yefeng.
 * @version 2013.2.19
 */

public class MySQLDemo {
    private static final String DRIVE ="com.mysql.jdbc.Driver";//设置驱动
    private static final String URL = "jdbc:mysql://localhost/";//设置连接
    private static final String USER = "root";//设置用户名
    private static final String PASSWORD ="password";//设置密码

public static void main (String []args) throws Exception{ //仅在测试时才将异常信息交给main()方法处理.
    Class.forName(DRIVE);//加载驱动
    Connection conn = DriverManager.getConnection(URL,USER,PASSWORD);//获得连接.
    System.out.println(conn);//输出连接.
    conn.close();//关闭连接.

       }
}

MySQL:数据库的导出和导入

这几天fedora17一部分配置出问题了(懒得修复),正好赶上fedora18发布。
于是直接就赶了fedora18的潮流,直接换系统,然后把旧系统的一些东西复制过去(很费精力啊啊啊啊啊)

首先将mysql的文件从fedora17导出来[在fedora终端执行下面的命令,数据库文件将导入当前目录]:
*:Test作为mysql里面的数据库名称.

MySQL数据库图标
image-1700

1
2
3
mysqldump -u 数据库用户名 -p Test > Test
password://键入你的密码,密码不显示,但实际已经录入
//回车.即可将数据库导出.

然后将文件复制到fedora18,再打开终端执行下面的命令:

1
2
3
4
5
6
    mysql -u 数据库用户名 -p
    password://键入你的密码,密码不显示,但实际已经录入
    mysql> CREATE DATABASE TestDB;
        mysql> use TestDB;
        mysql> source Test;
        mysql> SELECT * FROM Test; //验证数据是否导入.

完成.

MySQL向现有表中添加主键

MySQL数据库图标
image-1686

MySQL图标

不说简单的简介了,直接说下我遇到的问题以及解决情况吧:

在前不久建表的时候,一直觉得没必要创建主键列(INT,NOT NULL,PRIMARY KEY)自增长,可后来才发现,没有主键,更新和删除太不方便了

我去CSDN发帖问了下,结果有人回复是:

见一个有自增id表  把数据导入进去  然后drop老表  rename新表

当然,我看到下面还有别人的回复:

直接加一列有什么问题吗?

于是便直接添加了一列进去,数据也自动更新了(原来的每行数据都有编号了)。

下面是向MySQL新增一列主键的SQL语句:

1
2
3
ALTER TABLE t2  ADD c
 INT UNSIGNED NOT NULL AUTO_INCREMENT,
         ADD PRIMARY KEY (c);

注:其中t2是现有的表名,c是需要增加的列的名称.