日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

oracle导出BOM文件,ORACLE ERP导数据(BOM清单)-备份恢复-Oracle频道-中国IT实验室

發布時間:2023/12/4 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 oracle导出BOM文件,ORACLE ERP导数据(BOM清单)-备份恢复-Oracle频道-中国IT实验室 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

方法:把數據導入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 segment1=b.assembly_item and organization_id=2),

component_item_id=(select inventory_item_id from mtl_system_items

where segment1=b.component_item and organization_id=2);

16、查看是否有沒有物品ID的編碼存在(既沒有物品的ID被導入臨時表cux_bill_temp中)

select row_num

from cux_bill_temp

where assembly_item_id is null or component_item_id is null;

17、對其中導入的數據進行處理

update cux_bill_temp

set OPTIONAL=1

where upper(OPTIONAL_disp) like 'Y%';

update cux_bill_temp

set OPTIONAL=2

where OPTIONAL is null;

update cux_bill_temp

set MUTUALLY_EXCLUSIVE_OPTIONS=1

where upper(MUTUALLY_EXCLUSIVE_O_DISP) like 'Y%';

update cux_bill_temp

set MUTUALLY_EXCLUSIVE_OPTIONS=2

where MUTUALLY_EXCLUSIVE_O_DISP is null;

18、查看cux_bill_temp中的數據處理是否有漏

select count(*)

from cux_bill_temp

where OPTIONAL is null

or MUTUALLY_EXCLUSIVE_OPTIONS is null

or assembly_item_id is null

or component_item_id is null;

19、更新其內的WIP_SUPPLY_TYPE;

update cux_bill_temp

set WIP_SUPPLY_TYPE=6

where component_item like 'B%';

20、刪除表中的包(cux_bill_temp中),其相對應于表bom_bill_of_materials(既在表中已經存在了些選項包,不必導入包頭,只需導入包內容既可)

delete cux_bill_temp t

where exists (select null from bom_bill_of_materials where assembly_item_id=t.assembly_item_id and organization_id=2);

21、利用已經寫好的包寫入數據(既寫入接口表bom_bill_of_mtls_interface)

exec cux_bom_temp.insert_bill_15(1);

select count(*) from cux_bill_temp temp

where exits (select null from bom_inventory_components? b

where temp.bill_sequence_id=b.bill_sequence_id

and temp.component_item_id=b.component_item_id);

delete cux_bill_temp temp

where exists (select null from bom_inventory_components? b

where b.bill_sequence_id=temp.bill_sequence_id

and b.component_item_id=temp.component_item_id);

exec cux_bom_temp.insert_bill_10(1);

22、對寫入的數據在接口表中的情況進行查看

select count(*) from bom_bill_of_mtls_interface;

23、接著更新

exec cux_bom_temp.insert_bill_15(1);

select count(*) from cux_bill_temp where bill_sequence_id is null;

exec cux_bom_temp.insert_bill_20(1);

去提交請求

select count(*) from bom_inventory_comps_interface;

(導入成功后)對組件進行排序

exec cux_bom_temp.update_bill_item_num4;

select count(*) from bom_inventory_comps_interface;

24、對于接口表中的數據進行導入

delete bom_bill_of_mtls_interface;

insert into bom_bill_of_mtls_interface(

assembly_type,assembly_item_id,

organization_id,

process_flag,transaction_type)

select? distinct 1,assembly_item_id,

1,

1,'CREATE'

from cux_bill_temp;

【責編:landss】

--------------------next---------------------

總結

以上是生活随笔為你收集整理的oracle导出BOM文件,ORACLE ERP导数据(BOM清单)-备份恢复-Oracle频道-中国IT实验室的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。