参考一本书上的讲解,实验环境使用的是oracle 11g的SH用户下的数据,在创建数据库时勾选“sample
schema”,默认会创建一系列的示例用户,包括scott/hr/sh/bi等,但这些用户中除了scott外,其它用户都没有数据,这需要用官方网站下载一个examples的压缩包,把这个包安装上之后,再进行数据导入才会有相应的数据。
安装简单,直接执行安装程序即可,麻烦的是在导入数据上,颇费一番周折。
安装完后,在/u01/oracle/app/oracle/product/11.2.0/demo/schema/sales_history目录中可以找到相关的创建用户和示例数据文件,数据需要用sqlldr来导入。
具体步骤如下:
1. 先以管理员用户身份登录,执行sh_main.sql,这个脚本主要是创建用户、表、视图、索引等。
SQL> @sh_main.sqlspecify password for SH as parameter 1:
Enter value for 1: shspecify default tablespace for SH as parameter 2:
Enter value for 2: usersspecify temporary tablespace for SH as parameter 3:
Enter value for 3: tempspecify password for SYS as parameter 4:
Enter value for 4: memoryspecify directory path for the data files as parameter 5:
Enter value for 5: /u01/oracle/app/oracle/product/11.2.0/demo/schema/sales_historywriteable directory path for the log files as parameter 6:
Enter value for 6: /u03/dmpspecify version as parameter 7:
Enter value for 7: v3
注意每5步和第7步,第5步的路径指的是存放sh用户脚本的路径,第7步的版本,可以在sh脚相的目录ls一下,很多文件后面都有一个数字,就是这个版本,不是数据库版本。
2. 导入数据,顺序不能错,因为表中有外键约束,顺序错了导不进数据。
sqlldr userid=sh/sh control=prom_v3.ctl data=prom1v3.dat
sqlldr userid=sh/sh control=cust_v3.ctl data=cust1v3.dat
sqlldr userid=sh/sh control=cust2v3.ctl data=cust2v3.dat
sqlldr userid=sh/sh control=prod_v3.ctl data=prod1v3.dat
sqlldr userid=sh/sh control=prod2v3.ctl data=prod2v3.dat
sqlldr userid=sh/sh control=sale_v3.ctl data=sale1v3.dat
sqlldr userid=sh/sh control=sale2v3.ctl data=sale2v3.dat
3. 创建实验用的数据表
1 CREATE table sales_fact AS
2 SELECT country_name country,
3 country_subRegion region,
4 prod_name product,
5 calendar_year year,
6 calendar_week_number week,
7 SUM(amount_sold) sale,
8 sum(amount_sold * (case
9 when mod(rownum, 10) = 0 then
10 1.4
11 when mod(rownum, 5) = 0 then
12 0.6
13 when mod(rownum, 2) = 0 then
14 0.9
15 when mod(rownum, 2) = 1 then
16 1.2
17 else
18 1
19 end)) receipts
20 FROM sales, times, customers, countries, products
21 WHERE sales.time_id = times.time_id
22 AND sales.prod_id = products.prod_id
23 AND sales.cust_id = customers.cust_id
24 AND customers.country_id = countries.country_id
25 GROUP BY country_name,
26 country_subRegion,
27 prod_name,
28 calendar_year,
29 calendar_week_number;
实验环境完成。
分析函数之初体验(二)——环境,码迷,mamicode.com