方法:把数据导入BOM清单的方法是,把数据导入接口表中,让其自动运行既可。上传文件的时候,要注重使 用ASCII字符模式。 1、自己建立一中转表 drop table cux_bill_temp; create table cux_bill_temp(
bill_sequence_id number, assembly_item_id number, organization_id number, assembly_item varchar2(50), --BOM component_sequence_id number, component_quantity number, --组件数量 item_num number, --项目序列 operation_seq_num number, --工序序列 component_item_id number, component_item varchar2(50), --组件 PLANNING_FACTOR number, --计划%d100 component_yield_factor number, --产出率d1 wip_supply_type number, --供给类型 supply_type varchar2(50), supply_subinventory varchar2(50), --供给子库存 OPTIONAL number, --可选的 OPTIONAL_disp varchar2(10), --可选的 MUTUALLY_EXCLUSIVE_OPTIONS number, --互不相容 MUTUALLY_EXCLUSIVE_O_disp varchar2(10), --互不相容 attribute1 varchar2(50), --排序号 row_num number) ; 2、删除中转表中的数据 delete cux_bill_temp; 3、把要导入的数据放在扩展名为*.csv的文件中,且要相对应于中转表的字段,本例中的文件名为bill.csv。 另外的脚本文件为bill.ctl,其内容如下: options (skip=1) //跳过第一行,一般第一行为其字段说明 LOAD DATA INFILE bill.csv //bill.csv为数据文件 APPEND INTO TABLE cux_bill_temp FIELDS TERMINATED BY "," OPTIONALLY ENCLOSED BY '"' (与中转表相对应的字段列表) 登录进入Oracle数据库服务器,利用命令:(sqlload 用户名/密码@数据库名)载入文件bill.csv的数据入中转表。 4、查看中转表中的记录数(以备导入数据后进行对比) select count(*) from cux_bill_temp; 5、去除导入时在表bill.csv中的要害字段的空格字符,以免影响导入。 update cux_bill_temp set ASSEMBLY_ITEM=replace(ASSEMBLY_ITEM,' ',''), COMPONENT_ITEM=replace(COMPONENT_ITEM,' ',''); 6、查看是否有重复的选项(既是否重复了Item) select assembly_item,component_item,min(row_num),count(*) from cux_bill_temp group by assembly_item,component_item having count(*)>1; 假如有重复的Item,则要删除(或是重新合并) delete cux_bill_temp where row_num in (select min(row_num) from cux_bill_temp group by assembly_item,component_item having count(*)>1); 以下步骤为选做(如有重复才做,没有重复不做7-10) 7、再重新建立一个临时表(对于有重复数据,则只取一条数据,现取row_num最小的一条) drop table cux_bill_a; create table cux_bill_a as select assembly_item, component_item, component_quantity, PLANNING_FACTOR, component_yield_factor, supply_type, supply_subinventory, OPTIONAL_disp, MUTUALLY_EXCLUSIVE_O_disp, attribute1, min(row_num) row_num from cux_bill_temp group by assembly_item, component_item, component_quantity, PLANNING_FACTOR, component_yield_factor, supply_type, supply_subinventory, OPTIONAL_disp, MUTUALLY_EXCLUSIVE_O_disp, attribute1;
8、删除cux_bill_temp表 delete cux_bill_temp; 9、再重cux_bill_a表中把数据导入给cux_bill_temp表,完成把重复数据剔除的功能 insert into cux_bill_temp( assembly_item, component_item, component_quantity, PLANNING_FACTOR, component_yield_factor, supply_type, supply_subinventory, OPTIONAL_disp, MUTUALLY_EXCLUSIVE_O_disp, attribute1, row_num) select assembly_item, component_item, component_quantity, PLANNING_FACTOR, component_yield_factor, supply_type, supply_subinventory, OPTIONAL_disp, MUTUALLY_EXCLUSIVE_O_disp, attribute1, row_num from cux_bill_a; 10、删除表cux_bill_a drop table cux_bill_a; 11、再检查一次表,是否有重复的数据 select assembly_item,component_item,min(row_num),count(*) from cux_bill_temp group by assembly_item,component_item having count(*)>1; 12、查看在mtl_system_items表中,既是在库存表中,有没有不存在的Item. select distinct item from ( select distinct assembly_item item from cux_bill_temp b where not exists (select null from mtl_system_items where segment1=b.assembly_item and organization_id=2) union select distinct component_item item from cux_bill_temp b where not exists (select null from mtl_system_items where segment1=b.component_item and organization_id=2) ) order by item; 13、假如在mtl_system_items中,有不存在的物品ITEM时,要把其删除(或是把这些物品Item导入到系统中) 删除:delete cux_bill_temp b where not exists (select null from mtl_system_items where segment1=b.component_item and organization_id=2); delete cux_bill_temp a where not exists (select null from mtl_system_items where segment1=a.assembly_item and organization_id=2); 14、对没有物品Item的进行处理,把其放入另一临时表cux_item_temp中(以备查询及导入mtl_system_items表中) delete cux_item_temp; insert into cux_item_temp( segment1,description) select distinct item,item from ( select distinct assembly_item item from cux_bill_temp b where not exists (select null from mtl_system_items where segment1=b.assembly_item and organization_id=2) union select distinct component_item item from cux_bill_temp b where not exists (select null from mtl_system_items where segment1=b.component_item and organization_id=2) ) ;
将找到没有ITEM的BOM数据放到另一个表中,以备下次ITEM导入后在导BOM create table cux_bom_temp1 select distinct item from ( select distinct assembly_item item from cux_bill_temp b where not exists (select null from mtl_system_items where segment1=b.assembly_item and organization_id=2) union select distinct component_item item from cux_bill_temp b where not exists (select null from mtl_system_items where segment1=b.component_item and organization_id=2) ) ----------------------------------------------------------------------------------------------------------- 15、从表mtl_system_items中把物品的编码ID加入中转表cux_bill_temp表(从项目主组织)中 update cux_bill_temp b set assembly_item_id=(select inventory_item_id from mtl_system_items where segmen
|