Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oracle11g SQL*加载器在一列中处理多个值_Oracle11g_Sqlplus_Sql Loader - Fatal编程技术网

Oracle11g SQL*加载器在一列中处理多个值

Oracle11g SQL*加载器在一列中处理多个值,oracle11g,sqlplus,sql-loader,Oracle11g,Sqlplus,Sql Loader,我有一个CSV数据文件,其中包含要加载到数据库结构中的数据。该CSV文件中的示例数据如下所示: col1, col2, col3, "val1,val2,val3,val4,...", col5, col6, "val1,val2,val3,...", col8 正如您在上面的场景中所看到的,数据由逗号分隔,列c4和c7用倒逗号括起来,它们各自包含多个值。基本上,我正在尝试将这些多个值映射到多对多关系中。例如,考虑上述CSV文件中的每一行表示电影,COL

我有一个CSV数据文件,其中包含要加载到数据库结构中的数据。该CSV文件中的示例数据如下所示:

col1, col2, col3, "val1,val2,val3,val4,...", col5, col6, "val1,val2,val3,...", col8
正如您在上面的场景中所看到的,数据由逗号分隔,列c4和c7用倒逗号括起来,它们各自包含多个值。基本上,我正在尝试将这些多个值映射到多对多关系中。例如,考虑上述CSV文件中的每一行表示电影,COL4包含该电影的流派。现在,我的模式中有一个名为“Genre”的表和另一个名为“Movie\u Genre”的表,因此在加载数据时,我希望将这些col4类型加载到“Genre”表中,确保值不会重复,同时我希望通过使用“Movie\u genres”将存储在“movies”表中的电影与存储在“genres”表中的类型映射包含“电影id”和“流派id”的表


在SQLPLUS Oracle 11g windows平台上使用SQL Loader如何实现这一点?

将数据按原样加载到暂存表,并使用SQL查询进行处理。@Serg Well,我想这可能是可能的,因为我还没有尝试过,但我不能使用SQL加载器控制文件来实现这一点吗?这种设计违反了数据规范化的第一种标准形式,即列必须只包含一个值。这将导致未来的查询噩梦。要修复和创建多对多关系,需要获取两个实体的PK并将它们放在一起以创建关联表。此表只有在描述关联本身时才具有属性。做一些搜索,它会变得清晰。你能解释一下你的答案吗?可选的随附的子句将保持值在一起,但正如我上面提到的,这种设计很糟糕,会给你带来问题。
LOAD DATA
INFILE 'nameoffile.csv'
INSERT INTO TABLE Billing
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
TRAILING NULLCOLS
(
col1,
col2
)