oracle - 如何使用 PLSQL 为新表创建 id 并在数据仓库中的新表中插入genres_id 和流派(2038 条记录)
问题描述
我有 1 个movies
来自 csv 文件的表。我需要用额外的表genres
,,,production_companies
。directors
首先,我想创建genres
一个包含 2083 条记录的新表。如果我使用sequence_name.nextval()
比我将有重复,因为我在movies
表中有 10856 部电影。
我也只需要genres_id
在表中dw_movies
,而不是genres_name
请给我你的建议。这是movies
表格:
CREATE TABLE "AS6400U"."MOVIES" (
"ID" NUMBER(38,0),
"IMDB_ID" VARCHAR2(26 BYTE),
"POPULARITY" NUMBER(38,6),
"BUDGET" NUMBER(38,0),
"REVENUE" NUMBER(38,0),
"ORIGINAL_TITLE" VARCHAR2(500 BYTE),
"CAST" VARCHAR2(500 BYTE),
"HOMEPAGE" VARCHAR2(300 BYTE),
"DIRECTOR" VARCHAR2(600 BYTE),
"TAGLINE" VARCHAR2(400 BYTE),
"KEYWORDS" VARCHAR2(500 BYTE),
"OVERVIEW" VARCHAR2(2000 BYTE),
"RUNTIME" NUMBER(38,0),
"GENRES" VARCHAR2(400 BYTE),
"PRODUCTION_COMPANIES" VARCHAR2(500 BYTE),
"RELEASE_DATE" DATE,
"VOTE_COUNT" NUMBER(38,0),
"VOTE_AVERAGE" NUMBER(38,1),
"RELEASE_YEAR" NUMBER(38,0),
"BUDGET_ADJ" NUMBER(38,3),
"REVENUE_ADJ" NUMBER(38,5)
)
亲切的问候,安娜
解决方案
这是关于数据库建模的。表通常相互依赖,并且这种关系是通过外键约束来维护的。此外,表应该被规范化(最多第 3 范式),这样您就不会存储相同的数据两次(或更多次)。
然而,数据仓库的行为有所不同,因为它们处理大量数据,因此从几个巨大的表中获取行需要时间,因此 DW 表并不总是规范化的。
说你的表有 10K 行 - 这对 Oracle 来说几乎没有,所以我相信你应该做我在第一段中提到的:首先规范化表,设置关系(外键引用的主键)。一个接一个地写下所有这些CREATE TABLE
陈述,以确保你做对了。
从序列下一个值开始:我会说你弄错了。通常,它的(序列)值是按升序排列的。当前表有 10K 行并不重要,而您想创建一个有 2K 行的新表;所以呢?sequence.nextval
可能是 10K 左右(如果它也用于电影表)。你不应该(也可能不会)得到任何重复。
推荐阅读
- python - 多处理的内存消耗
- java - 哪种帐户报告工具最适合时间限制、动态查询和聚合
- ios - 如何正确隐藏范围按钮
- javascript - 如何在 JSON 中获取玩家物品数组中的所有非拥有物品
- ios - 本机 UITextField 安全文本输入强制使用英语(美国)键盘
- ubuntu - 带有 conjure-up 和 MAAS 的 Openstack
- javascript - 在 Jison 中使用自定义函数
- kubernetes - 度量服务器的 kubernetes hpa 问题
- python - 使用 pyinstaller 生成的 .exe 在其他 PC 上崩溃 - 如何创建真正没有依赖关系的 .exe?
- r - 折线图问题 - 情节看起来“有趣”(ggplot2)