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