首页 > 解决方案 > 如何使用 PLSQL 为新表创建 id 并在数据仓库中的新表中插入genres_id 和流派(2038 条记录)

问题描述

我有 1 个movies来自 csv 文件的表。我需要用额外的表genres,,,production_companiesdirectors

首先,我想创建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)
       )

亲切的问候,安娜

标签: oracledatabase-designdata-modelingdata-warehouse

解决方案


这是关于数据库建模的。表通常相互依赖,并且这种关系是通过外键约束来维护的。此外,表应该被规范化(最多第 3 范式),这样您就不会存储相同的数据两次(或更多次)。

然而,数据仓库的行为有所不同,因为它们处理大量数据,因此从几个巨大的表中获取行需要时间,因此 DW 表并不总是规范化的。

说你的表有 10K 行 - 这对 Oracle 来说几乎没有,所以我相信你应该做我在第一段中提到的:首先规范化表,设置关系(外键引用的主键)。一个接一个地写下所有这些CREATE TABLE陈述,以确保你做对了。

从序列下一个值开始:我会说你弄错了。通常,它的(序列)值是按升序排列的。当前表有 10K 行并不重要,而您想创建一个有 2K 行的新表;所以呢?sequence.nextval可能是 10K 左右(如果它也用于电影表)。你不应该(也可能不会)得到任何重复。


推荐阅读