惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Jina AI
Jina AI
MyScale Blog
MyScale Blog
量子位
月光博客
月光博客
J
Java Code Geeks
A
About on SuperTechFans
H
Hackread – Cybersecurity News, Data Breaches, AI and More
U
Unit 42
WordPress大学
WordPress大学
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
腾讯CDC
G
Google Developers Blog
博客园 - 【当耐特】
Engineering at Meta
Engineering at Meta
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
宝玉的分享
宝玉的分享
IT之家
IT之家
N
Netflix TechBlog - Medium
Microsoft Security Blog
Microsoft Security Blog
博客园 - 叶小钗
B
Blog
Martin Fowler
Martin Fowler
P
Proofpoint News Feed
B
Blog RSS Feed

博客园 - AlfredZhao

Docker 删除 none 镜像:一次真实的清理记录 Oracle Property Graph 结合 In-Memory 的性能验证 sed 一条命令批量替换 SQL 文件路径 执行新项目 python 脚本前,先用 conda 建一个独立环境 Git 提交代码:从报错到 SSH 免密推送 GitHub 克隆他人私有仓库:从授权到下载 理解Oracle Property Graph:以账户转账示例完成图特性最小测试 APEX 无法分配 SH 用户?一个存储过程轻松解决 Oracle 排除非业务表:一份能直接抄的“全量过滤”SQL 进程都杀了,为什么 `netstat` 还能看到端口? MAC 空间告急?Codex 的 156GB 缓存垃圾,这样清! 人工清理问题数据:先查准,再删除 TK(Trusted Knowledge)为何而生? 使用快捷键快速切换 Mac 外接显示器模式 客户环境 Nginx 配置:流式报表与超时排查要点 Security Central:数据库安全的统一控制与运营平台 Palantir 眼中的一次“订单可能延期”,如何成为实时决策的起点? 从一条订单消息到 Bronze、Silver、Gold:我的第一次 Kafka + Lakehouse 实验 UUID v4 与 v7:同样是唯一 ID,为什么数据库表现可能完全不同? 用 crontab 给 LLM 使用量装上“监控眼” DeepSeek 与 GPT API 价格调整:该关注什么? 查看 Oracle 数据库中的定时任务执行情况 Codex 专用用户登录后自动进入默认项目目录 Mac 小技巧:用方向键优雅处理超长网址 Oracle GDD 与 Raft:别把共识机制和数据主权混为一谈 在 Oracle APEX 中用 BGE_BASE 生成向量:从模型导入到历史数据更新 行业人+AI:真正有价值的四个关键要素 知识库文件解析失败:一次由 Domain Index 引发的定位记录 Unicode 码位数、UTF-8 字节数、中英文差异和 Oracle 长度别再混淆了 Skill 的使用:从路径到能力边界
SH 中文化样例数据使用手册
AlfredZhao · 2026-09-11 · via 博客园 - AlfredZhao

2026-09-11 07:06  AlfredZhao  阅读(0)  评论()    收藏  举报

在数据库演示与 PoC 场景中,Oracle 自带的 SH 示例模式虽然经典,但英文维度数据往往让国内演示效果打折扣。笔者整理了一套方案:保留 SH 标准英文对象名,同时装载中文化维度数据,并按参数生成可复现的销售历史数据,方便个人测试与概念验证。

01 | 环境准备

使用前请确认满足以下条件:

  • Oracle Database 19c 或更高版本,数据库字符集为 AL32UTF8
  • SQLcl 26.1.2.0 或更高版本。
  • 使用具备创建、删除用户权限的账号连接,例如 SYSTEMADMIN
  • 从仓库内的 sales_history_cn/sales_history 目录执行脚本,且该目录下的 CSV 文件必须完整保留。

注意:若输入 YES 覆盖已有 SH 模式,安装脚本会执行 DROP USER SH CASCADE。这会永久移除该用户及其对象,请勿对承载业务数据的 SH 用户执行。

02 | 安装步骤

在终端中进入脚本目录并连接目标数据库:

cd sales_history_cn/sales_history
sql system@//db-host:1521/service_name

在 SQLcl 中运行:

@sh_install.sql

安装过程会依次询问 SH 密码、表空间、生成模式及对应参数,最后确认是否覆盖已有 SH 模式。脚本会在当前目录生成 sh_install.log

① 默认方式:最近 N 个完整自然年加今年截至当天

生成模式 [RECENT|RANGE] [RECENT]: RECENT
RECENT 模式的完整自然年数 [3]: 3

其中“当天”取目标数据库服务器的 SYSDATE。例如服务器日期为 2026-09-09、N 为 3 时,请求范围为 2023-01-012026-09-09

② 自定义方式:指定起止日期

生成模式 [RECENT|RANGE] [RECENT]: RANGE
RANGE 模式起始日期 (YYYY-MM-DD): 2025-07-01
RANGE 模式结束日期 (YYYY-MM-DD): 2030-12-31

RANGE 的起止日期均包含在最终范围内,可指定未来日期。

03 | 数据生成规则

  • 客户、促销和补充人口统计等维度从 CSV 装载;TIMESSALESCOSTS 不装载原始 CSV,而是在选定范围内完整生成。
  • SALES 每个完整自然年约 200,000 行,不完整年份按实际天数比例生成。最终 MIN(time_id)MAX(time_id) 与选定范围一致。
  • COSTS 按产品、日期、促销和渠道的唯一组合生成,避免多笔销售造成重复成本行。
  • 固定随机种子为 20260909。在 CSV、脚本版本和输入参数一致时,生成的新增事实数据一致。
  • TIMES 使用中国自然日历:周一为首日,周日为周结束日;财年、财月、财季等同自然年口径。时间文本格式示例:2026年09月2026年Q3星期一
  • SALESCOSTS 使用按年自动扩展的 interval 分区,生成到未来年份无需再修改建表 DDL。

04 | 中文化范围

数据库对象名保持 Oracle SH 的英文命名,以兼容标准示例 SQL。装载后,以下展示数据会被中文化:

  • 国家和区域名称;客户姓名、地址、电话、邮箱、收入与婚姻状态。
  • 产品的单位、包装、状态和汇总描述。
  • 促销名称、类别、子类别与汇总描述。
  • 补充人口统计中的教育、职业、家庭规模和备注。
  • TIMES 的星期、月、季及财务期间文本。

客户数据是中国本土模拟数据,仅用于演示,不能视为真实个人信息。

05 | 安装后校验

安装脚本末尾会输出各表实际行数。连接 SH 后可执行以下查询:

SELECT MIN(time_id) AS 最早销售日期,
       MAX(time_id) AS 最晚销售日期,
       COUNT(*)     AS 销售行数
FROM sales;

SELECT calendar_year AS 年份,
       COUNT(*) AS 销售行数
FROM sales s
JOIN times t ON t.time_id = s.time_id
GROUP BY calendar_year
ORDER BY calendar_year;

SELECT table_name, partition_name, high_value
FROM user_tab_partitions
WHERE table_name IN ('SALES', 'COSTS')
ORDER BY table_name, partition_position;

可检查中文时间维度:

SELECT time_id, day_name, calendar_month_desc, calendar_quarter_desc
FROM times
ORDER BY time_id
FETCH FIRST 10 ROWS ONLY;

06 | 卸载

以具备删除用户权限的账号连接,并在 sales_history_cn/sales_history 目录执行:

@sh_uninstall.sql

该操作会删除整个 SH 用户及其全部对象。若需要保留结果,请先按本地运维规范完成 Data Pump 导出或备份。

07 | 常见问题

现象 处理建议
RANGE 参数报错 两个日期都必须填写,并严格使用 YYYY-MM-DD;起始日期不得晚于结束日期。
中文显示乱码 确认数据库字符集为 AL32UTF8,并使用支持 UTF-8 的终端。
找不到 CSV 文件 必须从包含 customers.csvpromotions.csvsupplementary_demographics.csv 等维度文件的 sales_history_cn/sales_history 目录执行安装。
生成数据比预期少 完整年度约为 200,000 行,不完整年份会按实际天数等比例生成。
表空间不足或执行较慢 每完整年会额外增加约 20 万条销售及对应成本数据,并创建本地索引;请增加表空间并预留足够的加载时间。

下载命令:

git clone https://github.com/AlfredZhao/sales_history_cn.git

关注我,和AI一起成长~