[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"consumer-news-detail-931":3,"consumer-news-interaction-931":38,"consumer-news-related-931":41},{"detail":4,"item":34},{"card":5,"schemaVersion":21,"fields":22,"content":28},{"id":6,"kind":7,"targetType":8,"targetId":9,"subtype":7,"typeLabel":10,"title":11,"subtitle":12,"summary":13,"coverUrl":14,"badgeText":14,"href":15,"sourceName":12,"meta":16,"metrics":18,"tags":19,"resolved":20},"NEWS_ARTICLE:931","news","NEWS_ARTICLE",931,"资讯","SH 中文化样例数据使用手册","博客园","在数据库演示与 PoC 场景中，Oracle 自带的 SH 示例模式虽然经典，但英文维度数据往往让国内演示效果打折扣。笔者整理了一套方案：保留 SH 标准英文对象名，同时装载中文化维度数据，并按参数生成可复现的销售历史数据，方便个人测试与概念验证。 01 | 环境准备 使用前请确认满足以下条件： O","","\u002Fnews\u002F931",[17],"2026",{},[],true,"consumer-content-detail-v1",{"sourceName":12,"authorName":23,"summary":13,"description":13,"publishTime":24,"updateTime":25,"sourceUrl":26,"language":27},"AlfredZhao","2026-09-11T07:06","2026-09-11T15:21:59","https:\u002F\u002Fwww.cnblogs.com\u002Fjyzhao\u002Fp\u002F22929303","中文",{"format":29,"policy":30,"normalized":20,"html":31,"text":32,"wordCount":33,"hasBody":20},"HTML","NEWS_CONTENT_V1","\u003Cp>在数据库演示与 PoC 场景中，Oracle 自带的 SH 示例模式虽然经典，但英文维度数据往往让国内演示效果打折扣。笔者整理了一套方案：保留 SH 标准英文对象名，同时装载中文化维度数据，并按参数生成可复现的销售历史数据，方便个人测试与概念验证。\u003C\u002Fp>\n\u003Ch2>01 | 环境准备\u003C\u002Fh2>\n\u003Cp>使用前请确认满足以下条件：\u003C\u002Fp>\n\u003Cul>\n \u003Cli>Oracle Database 19c 或更高版本，数据库字符集为 \u003Ccode>AL32UTF8\u003C\u002Fcode>。\u003C\u002Fli>\n \u003Cli>SQLcl 26.1.2.0 或更高版本。\u003C\u002Fli>\n \u003Cli>使用具备创建、删除用户权限的账号连接，例如 \u003Ccode>SYSTEM\u003C\u002Fcode> 或 \u003Ccode>ADMIN\u003C\u002Fcode>。\u003C\u002Fli>\n \u003Cli>从仓库内的 \u003Ccode>sales_history_cn\u002Fsales_history\u003C\u002Fcode> 目录执行脚本，且该目录下的 CSV 文件必须完整保留。\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cblockquote>\n \u003Cp>注意：若输入 \u003Ccode>YES\u003C\u002Fcode> 覆盖已有 SH 模式，安装脚本会执行 \u003Ccode>DROP USER SH CASCADE\u003C\u002Fcode>。这会永久移除该用户及其对象，请勿对承载业务数据的 SH 用户执行。\u003C\u002Fp>\n\u003C\u002Fblockquote>\n\u003Ch2>02 | 安装步骤\u003C\u002Fh2>\n\u003Cp>在终端中进入脚本目录并连接目标数据库：\u003C\u002Fp>\n\u003Cpre>\u003Ccode>cd sales_history_cn\u002Fsales_history\nsql system@\u002F\u002Fdb-host:1521\u002Fservice_name\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>在 SQLcl 中运行：\u003C\u002Fp>\n\u003Cpre>\u003Ccode>@sh_install.sql\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>安装过程会依次询问 SH 密码、表空间、生成模式及对应参数，最后确认是否覆盖已有 SH 模式。脚本会在当前目录生成 \u003Ccode>sh_install.log\u003C\u002Fcode>。\u003C\u002Fp>\n\u003Ch3>① 默认方式：最近 N 个完整自然年加今年截至当天\u003C\u002Fh3>\n\u003Cpre>\u003Ccode>生成模式 [RECENT|RANGE] [RECENT]: RECENT\nRECENT 模式的完整自然年数 [3]: 3\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>其中“当天”取目标数据库服务器的 \u003Ccode>SYSDATE\u003C\u002Fcode>。例如服务器日期为 \u003Ccode>2026-09-09\u003C\u002Fcode>、N 为 3 时，请求范围为 \u003Ccode>2023-01-01\u003C\u002Fcode> 至 \u003Ccode>2026-09-09\u003C\u002Fcode>。\u003C\u002Fp>\n\u003Ch3>② 自定义方式：指定起止日期\u003C\u002Fh3>\n\u003Cpre>\u003Ccode>生成模式 [RECENT|RANGE] [RECENT]: RANGE\nRANGE 模式起始日期 (YYYY-MM-DD): 2025-07-01\nRANGE 模式结束日期 (YYYY-MM-DD): 2030-12-31\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>\u003Ccode>RANGE\u003C\u002Fcode> 的起止日期均包含在最终范围内，可指定未来日期。\u003C\u002Fp>\n\u003Ch2>03 | 数据生成规则\u003C\u002Fh2>\n\u003Cul>\n \u003Cli>客户、促销和补充人口统计等维度从 CSV 装载；\u003Ccode>TIMES\u003C\u002Fcode>、\u003Ccode>SALES\u003C\u002Fcode> 和 \u003Ccode>COSTS\u003C\u002Fcode> 不装载原始 CSV，而是在选定范围内完整生成。\u003C\u002Fli>\n \u003Cli>\u003Ccode>SALES\u003C\u002Fcode> 每个完整自然年约 200,000 行，不完整年份按实际天数比例生成。最终 \u003Ccode>MIN(time_id)\u003C\u002Fcode> 和 \u003Ccode>MAX(time_id)\u003C\u002Fcode> 与选定范围一致。\u003C\u002Fli>\n \u003Cli>\u003Ccode>COSTS\u003C\u002Fcode> 按产品、日期、促销和渠道的唯一组合生成，避免多笔销售造成重复成本行。\u003C\u002Fli>\n \u003Cli>固定随机种子为 \u003Ccode>20260909\u003C\u002Fcode>。在 CSV、脚本版本和输入参数一致时，生成的新增事实数据一致。\u003C\u002Fli>\n \u003Cli>\u003Ccode>TIMES\u003C\u002Fcode> 使用中国自然日历：周一为首日，周日为周结束日；财年、财月、财季等同自然年口径。时间文本格式示例：\u003Ccode>2026年09月\u003C\u002Fcode>、\u003Ccode>2026年Q3\u003C\u002Fcode>、\u003Ccode>星期一\u003C\u002Fcode>。\u003C\u002Fli>\n \u003Cli>\u003Ccode>SALES\u003C\u002Fcode> 和 \u003Ccode>COSTS\u003C\u002Fcode> 使用按年自动扩展的 interval 分区，生成到未来年份无需再修改建表 DDL。\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch2>04 | 中文化范围\u003C\u002Fh2>\n\u003Cp>数据库对象名保持 Oracle SH 的英文命名，以兼容标准示例 SQL。装载后，以下展示数据会被中文化：\u003C\u002Fp>\n\u003Cul>\n \u003Cli>国家和区域名称；客户姓名、地址、电话、邮箱、收入与婚姻状态。\u003C\u002Fli>\n \u003Cli>产品的单位、包装、状态和汇总描述。\u003C\u002Fli>\n \u003Cli>促销名称、类别、子类别与汇总描述。\u003C\u002Fli>\n \u003Cli>补充人口统计中的教育、职业、家庭规模和备注。\u003C\u002Fli>\n \u003Cli>\u003Ccode>TIMES\u003C\u002Fcode> 的星期、月、季及财务期间文本。\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>客户数据是中国本土模拟数据，仅用于演示，不能视为真实个人信息。\u003C\u002Fp>\n\u003Ch2>05 | 安装后校验\u003C\u002Fh2>\n\u003Cp>安装脚本末尾会输出各表实际行数。连接 SH 后可执行以下查询：\u003C\u002Fp>\n\u003Cpre>\u003Ccode>SELECT MIN(time_id) AS 最早销售日期,\n       MAX(time_id) AS 最晚销售日期,\n       COUNT(*)     AS 销售行数\nFROM sales;\n\nSELECT calendar_year AS 年份,\n       COUNT(*) AS 销售行数\nFROM sales s\nJOIN times t ON t.time_id = s.time_id\nGROUP BY calendar_year\nORDER BY calendar_year;\n\nSELECT table_name, partition_name, high_value\nFROM user_tab_partitions\nWHERE table_name IN ('SALES', 'COSTS')\nORDER BY table_name, partition_position;\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>可检查中文时间维度：\u003C\u002Fp>\n\u003Cpre>\u003Ccode>SELECT time_id, day_name, calendar_month_desc, calendar_quarter_desc\nFROM times\nORDER BY time_id\nFETCH FIRST 10 ROWS ONLY;\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch2>06 | 卸载\u003C\u002Fh2>\n\u003Cp>以具备删除用户权限的账号连接，并在 \u003Ccode>sales_history_cn\u002Fsales_history\u003C\u002Fcode> 目录执行：\u003C\u002Fp>\n\u003Cpre>\u003Ccode>@sh_uninstall.sql\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>该操作会删除整个 SH 用户及其全部对象。若需要保留结果，请先按本地运维规范完成 Data Pump 导出或备份。\u003C\u002Fp>\n\u003Ch2>07 | 常见问题\u003C\u002Fh2>\n\u003Ctable>\n \u003Cthead>\n  \u003Ctr>\n   \u003Cth>现象\u003C\u002Fth>\n   \u003Cth>处理建议\u003C\u002Fth>\n  \u003C\u002Ftr>\n \u003C\u002Fthead>\n \u003Ctbody>\n  \u003Ctr>\n   \u003Ctd>\u003Ccode>RANGE\u003C\u002Fcode> 参数报错\u003C\u002Ftd>\n   \u003Ctd>两个日期都必须填写，并严格使用 \u003Ccode>YYYY-MM-DD\u003C\u002Fcode>；起始日期不得晚于结束日期。\u003C\u002Ftd>\n  \u003C\u002Ftr>\n  \u003Ctr>\n   \u003Ctd>中文显示乱码\u003C\u002Ftd>\n   \u003Ctd>确认数据库字符集为 \u003Ccode>AL32UTF8\u003C\u002Fcode>，并使用支持 UTF-8 的终端。\u003C\u002Ftd>\n  \u003C\u002Ftr>\n  \u003Ctr>\n   \u003Ctd>找不到 CSV 文件\u003C\u002Ftd>\n   \u003Ctd>必须从包含 \u003Ccode>customers.csv\u003C\u002Fcode>、\u003Ccode>promotions.csv\u003C\u002Fcode> 和 \u003Ccode>supplementary_demographics.csv\u003C\u002Fcode> 等维度文件的 \u003Ccode>sales_history_cn\u002Fsales_history\u003C\u002Fcode> 目录执行安装。\u003C\u002Ftd>\n  \u003C\u002Ftr>\n  \u003Ctr>\n   \u003Ctd>生成数据比预期少\u003C\u002Ftd>\n   \u003Ctd>完整年度约为 200,000 行，不完整年份会按实际天数等比例生成。\u003C\u002Ftd>\n  \u003C\u002Ftr>\n  \u003Ctr>\n   \u003Ctd>表空间不足或执行较慢\u003C\u002Ftd>\n   \u003Ctd>每完整年会额外增加约 20 万条销售及对应成本数据，并创建本地索引；请增加表空间并预留足够的加载时间。\u003C\u002Ftd>\n  \u003C\u002Ftr>\n \u003C\u002Ftbody>\n\u003C\u002Ftable>\n\u003Cp>\u003Cstrong>下载命令：\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cpre>\u003Ccode>git clone https:\u002F\u002Fgithub.com\u002FAlfredZhao\u002Fsales_history_cn.git\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>关注我，和AI一起成长~\u003C\u002Fp>","在数据库演示与 PoC 场景中，Oracle 自带的 SH 示例模式虽然经典，但英文维度数据往往让国内演示效果打折扣。笔者整理了一套方案：保留 SH 标准英文对象名，同时装载中文化维度数据，并按参数生成可复现的销售历史数据，方便个人测试与概念验证。 01 | 环境准备 使用前请确认满足以下条件： Oracle Database 19c 或更高版本，数据库字符集为 AL32UTF8。 SQLcl 26.1.2.0 或更高版本。 使用具备创建、删除用户权限的账号连接，例如 SYSTEM 或 ADMIN。 从仓库内的 sales_history_cn\u002Fsales_history 目录执行脚本，且该目录下的 CSV 文件必须完整保留。 注意：若输入 YES 覆盖已有 SH 模式，安装脚本会执行 DROP USER SH CASCADE。这会永久移除该用户及其对象，请勿对承载业务数据的 SH 用户执行。 02 | 安装步骤 在终端中进入脚本目录并连接目标数据库： cd sales_history_cn\u002Fsales_history sql system@\u002F\u002Fdb-host:1521\u002Fservice_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-01 至 2026-09-09。 ② 自定义方式：指定起止日期 生成模式 [RECENT|RANGE] [RECENT]: RANGE RANGE 模式起始日期 (YYYY-MM-DD): 2025-07-01 RANGE 模式结束日期 (YYYY-MM-DD): 2030-12-31 RANGE 的起止日期均包含在最终范围内，可指定未来日期。 03 | 数据生成规则 客户、促销和补充人口统计等维度从 CSV 装载；TIMES、SALES 和 COSTS 不装载原始 CSV，而是在选定范围内完整生成。 SALES 每个完整自然年约 200,000 行，不完整年份按实际天数比例生成。最终 MIN(time_id) 和 MAX(time_id) 与选定范围一致。 COSTS 按产品、日期、促销和渠道的唯一组合生成，避免多笔销售造成重复成本行。 固定随机种子为 20260909。在 CSV、脚本版本和输入参数一致时，生成的新增事实数据一致。 TIMES 使用中国自然日历：周一为首日，周日为周结束日；财年、财月、财季等同自然年口径。时间文本格式示例：2026年09月、2026年Q3、星期一。 SALES 和 COSTS 使用按年自动扩展的 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\u002Fsales_history 目录执行： @sh_uninstall.sql 该操作会删除整个 SH 用户及其全部对象。若需要保留结果，请先按本地运维规范完成 Data Pump 导出或备份。 07 | 常见问题 现象 处理建议 RANGE 参数报错 两个日期都必须填写，并严格使用 YYYY-MM-DD；起始日期不得晚于结束日期。 中文显示乱码 确认数据库字符集为 AL32UTF8，并使用支持 UTF-8 的终端。 找不到 CSV 文件 必须从包含 customers.csv、promotions.csv 和 supplementary_demographics.csv 等维度文件的 sales_history_cn\u002Fsales_history 目录执行安装。 生成数据比预期少 完整年度约为 200,000 行，不完整年份会按实际天数等比例生成。 表空间不足或执行较慢 每完整年会额外增加约 20 万条销售及对应成本数据，并创建本地索引；请增加表空间并预留足够的加载时间。 下载命令： git clone https:\u002F\u002Fgithub.com\u002FAlfredZhao\u002Fsales_history_cn.git 关注我，和AI一起成长~",2383,{"id":6,"kind":7,"title":11,"summary":13,"image":14,"href":15,"meta":17,"badge":10,"author":12,"stats":-1,"accent":35,"coverRatio":36,"tags":37},"#2563eb","16 \u002F 10",[7,8],{"targetType":8,"targetId":9,"likedByMe":39,"likeCount":40,"commentCount":40,"contentLikeCount":40,"contentCommentCount":40,"sourceLikeCount":40,"sourceCommentCount":40},false,0,[42,51,57,63,72,79,86,93],{"id":43,"kind":7,"title":44,"summary":45,"image":46,"href":47,"meta":48,"badge":10,"author":12,"stats":-1,"accent":35,"coverRatio":36,"tags":49},"NEWS_ARTICLE:927","HelloCrab - 短视频开源爬虫，仅供学习参考","HelloCrab 基于 Avalonia、Playwright、AI与 FFmpeg 的跨平台桌面采集器，支持9大平台，以及 Android、iOS、Browser 远程控制端。 Made By ChatGPT &amp; Vincent with ❤ 平台 是否接入 哔哩哔哩 ✅ 抖音 ✅ 快手","https:\u002F\u002Fwww.cnblogs.com\u002Fhupo376787\u002Fp\u002FScreenshot\u002FWindows.jpg","\u002Fnews\u002F927","2026 · 软件开发",[50],"软件开发",{"id":52,"kind":7,"title":53,"summary":54,"image":14,"href":55,"meta":48,"badge":10,"author":12,"stats":-1,"accent":35,"coverRatio":36,"tags":56},"NEWS_ARTICLE:929",".NET 异常处理的\"暗门\"：代码里写满 catch，你依然能抓住它——从一个 AI Agent 运行时的源码说起","一个健壮的系统，必然到处都是有意的 catch；异常被消化不等于问题不存在。 观测与韧性，是一个硬币的两面——降级逻辑保证系统不崩，FirstChance 保证你能看见它为什么降级。","\u002Fnews\u002F929",[50],{"id":58,"kind":7,"title":59,"summary":60,"image":14,"href":61,"meta":17,"badge":10,"author":12,"stats":-1,"accent":35,"coverRatio":36,"tags":62},"NEWS_ARTICLE:928","架构师化繁为简，执行者化简为繁","新手改三天，你改三行——反而是你显得更不重要。因为化繁为简做得越纯熟，产出看起来越小。这篇聊聊两种能力的辩证关系，以及为什么'看不见'的那部分工作，恰恰是最难的部分。","\u002Fnews\u002F928",[7,8],{"id":64,"kind":7,"title":65,"summary":66,"image":67,"href":68,"meta":69,"badge":10,"author":12,"stats":-1,"accent":35,"coverRatio":36,"tags":70},"NEWS_ARTICLE:930","基于 vLLM+Nginx 构建负载均衡推理集群","企业内部私有环境部署大模型推理集群时，很容易遇到流量调度混乱、节点负载失衡、会话上下文丢失、接口缺少鉴权防护等一系列问题，单 vLLM 推理节点难以支撑并发请求。本文基于 Ubuntu 22.04 系统环境，搭建 Nginx + vLLM-Semantic-Router + vLLM-Router","https:\u002F\u002Fimg2024.cnblogs.com\u002Fblog\u002F1379525\u002F202609\u002F1379525-20260910165534385-2022408098.png","\u002Fnews\u002F930","2026 · 人工智能",[71],"人工智能",{"id":73,"kind":7,"title":74,"summary":75,"image":76,"href":77,"meta":69,"badge":10,"author":12,"stats":-1,"accent":35,"coverRatio":36,"tags":78},"NEWS_ARTICLE:932","2026年AI编程工具大全，33个主流工具一次看懂","事情是这样的，前两天看到一张图，是某个社区官网的「支持的工具」清单，我数了数，整整31个AI编程工具。 两年前这份清单撑死5个，现在直接31个，而且我居然每一个都认识。。。 干脆整理成一篇，顺手把最近字节的TraeWork和豆包工作也补了进来，凑成33个。 今天给大家推荐一遍，每个工具说说它是干什么","https:\u002F\u002Fimage.kjdaohang.com\u002Fimg\u002F20260909210838518.png","\u002Fnews\u002F932",[71],{"id":80,"kind":7,"title":81,"summary":82,"image":83,"href":84,"meta":48,"badge":10,"author":12,"stats":-1,"accent":35,"coverRatio":36,"tags":85},"NEWS_ARTICLE:933","写给 C++ 工程师的 OpenClaw.NET 上手指南：用你熟悉的 C++ 思维，跑起一个生产级 AI Agent","它像一个「基于 boost.asio + REST 端点的常驻服务」——对外是 HTTP \u002F WebSocket \u002F 各 IM 的 webhook，对内跑着一个能调工具、读写记忆、跨渠道对话的 AI Agent——只不过协程不用你手写 promise_type，内存不用你管 new\u002Fdelete。","https:\u002F\u002Fimg2024.cnblogs.com\u002Fblog\u002F510\u002F202609\u002F510-20260905070811424-1837144874.jpg","\u002Fnews\u002F933",[50],{"id":87,"kind":7,"title":88,"summary":89,"image":90,"href":91,"meta":69,"badge":10,"author":12,"stats":-1,"accent":35,"coverRatio":36,"tags":92},"NEWS_ARTICLE:935","[Agent Memory \u002F 强化学习] MemPO源码学习笔记 ---（1）--- 总体","[Agent Memory \u002F 强化学习] MemPO源码学习笔记 （1） 总体 目录[Agent Memory \u002F 强化学习] MemPO源码学习笔记 （1） 总体0x00 概要0x01 基础 &amp; 背景1.1 用RL训练记忆系统的要点1.2 主要难点1.3 主要思路1.4 RL训练方案1.","https:\u002F\u002Fimg2024.cnblogs.com\u002Fblog\u002F1850883\u002F202609\u002F1850883-20260906190854637-986949885.jpg","\u002Fnews\u002F935",[71],{"id":94,"kind":7,"title":95,"summary":96,"image":14,"href":97,"meta":17,"badge":10,"author":12,"stats":-1,"accent":35,"coverRatio":36,"tags":98},"NEWS_ARTICLE:934","Memory 记忆设计讨论：为什么 Agent Memory 不能只靠向量数据库？","这是 Agent Memory 系列的第二篇文章。上一篇先给出了一个总体判断：Memory 是一套让 Agent 能够持续使用历史上下文的能力。 这篇只讨论一个经常出现的问题： 既然 Agent 需要从历史信息中找内容，接入向量数据库不就可以了吗？ 我的答案是：向量数据库很有用，但它只解决了召回问题","\u002Fnews\u002F934",[7,8]]