ORACLE ERP导数据(BOM清单)[1]

[入库:2005年8月18日] [更新:2007年3月24日]

本文简介:选择自 fangke 的 blog

方法:把数据导入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

本文关键:ORACLE ERP导数据(BOM清单)
  相关方案
Google
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top