下面是一些代碼提取三個表3個不同的CSV文件和設置他們寫得太根據您是否在Windows或UNIX上運行的路徑。文件名也是在運行時創建的。
頭記錄與逗號分隔的條目(使用數據庫字段插件形成和排除的表名則只是:-)
之間
我也有,可以用來寫出來的任何錯誤日誌文件輸入分隔符,如果需要的話。
如果出現錯誤,文件將在finally塊中關閉。
DEFINE VARIABLE cLogPathFile AS CHARACTER NO-UNDO.
DEFINE VARIABLE cDataPathFile AS CHARACTER NO-UNDO.
DEFINE VARIABLE cLogOutputPath AS CHARACTER NO-UNDO.
DEFINE VARIABLE cDataOutputPath AS CHARACTER NO-UNDO.
DEFINE BUFFER tbl_1 FOR tbl_1.
DEFINE BUFFER tbl_2 FOR tbl_2.
DEFINE BUFFER tbl_3 FOR tbl_3.
DEFINE NEW SHARED STREAM sm_log_file.
DEFINE NEW SHARED STREAM sm_tbl1.
DEFINE NEW SHARED STREAM sm_tbl2.
DEFINE NEW SHARED STREAM sm_tbl3.
IF OPSYS = "UNIX" THEN
DO:
cDataOutputPath = "/Data/Out/".
cLogOutputPath = "/Data/".
END.
ELSE
DO:
cDataOutputPath = "T:~\Data~\Out~\".
cLogOutputPath = "T:~\Data~\".
END.
ASSIGN cLogPathFile = cLogOutputPath + "myfile_" + STRING(TODAY,"999999") + "_" + STRING(TIME,"999999") + ".log" NO-ERROR.
{ mip/inc/mipreturnerror.i }
ASSIGN cDataPathFile = cDataOutputPath + "myfile_" + "[Report Name]" + "_" + STRING(TODAY,"999999") + "_" + STRING(TIME,"999999") + ".csv" NO-ERROR.
{ mip/inc/mipreturnerror.i }
OUTPUT STREAM sm_log_file TO VALUE(cLogPathFile).
OUTPUT STREAM sm_tbl1 TO VALUE(REPLACE(cDataPathFile, "[Report Name]", "tbl_1")).
OUTPUT STREAM sm_tbl2 TO VALUE(REPLACE(cDataPathFile, "[Report Name]", "tbl_2")).
OUTPUT STREAM sm_tbl3 TO VALUE(REPLACE(cDataPathFile, "[Report Name]", "tbl_3")).
PUT STREAM sm_tbl1 "category_obj,created_datetime,effective_date,lookup_column_heading,owning_entity_mnemonic,owning_obj,user_key,user_mnemonic,user_obj,worksheet_description,worksheet_name,worksheet_obj" SKIP.
PUT STREAM sm_tbl2 "column_data_type,column_heading,column_number,column_obj,worksheet_obj" SKIP.
PUT STREAM sm_tbl3 "cell_character_value,cell_date_value,cell_numeric_value,cell_text_value,column_heading,lookup_character_value,lookup_date_value,lookup_numeric_value,row_number,value_obj,worksheet_obj" SKIP.
FOR EACH tbl_1 NO-LOCK:
EXPORT STREAM sm_tbl1 DELIMITER "," tbl_1.category_obj tbl_1.created_datetime tbl_1.effective_date agm_worksheet.lookup_column_heading tbl_1.owning_entity_mnemonic tbl_1.owning_obj tbl_1.user_tbl_1.user_mnemonic tbl_1.user_obj tbl_1.worksheet_description tbl_1.worksheet_name tbl_1.worksheet_obj.
FOR each tbl_2 NO-LOCK WHERE tbl_2.worksheet_obj = tbl_1.worksheet_obj.
EXPORT STREAM sm_tbl2 DELIMITER "," tbl_2.column_data_type tbl_2.column_heading tbl_2.column_number tbl_2.column_obj tbl_2.worksheet_obj.
END.
FOR each tbl_3 NO-LOCK WHERE tbl_3.worksheet_obj = tbl_1.worksheet_obj:
EXPORT STREAM sm_tbl3 DELIMITER "," tbl_3.cell_character_value tbl_3.cell_date_value tbl_3.cell_numeric_value tbl_3.cell_text_value tbl_3.column_heading tbl_3.lookup_character_value tbl_3.lookup_date_value tbl_3.lookup_numeric_value tbl_3.row_number tbl_3.value_obj tbl_3.worksheet_obj.
END.
END.
FINALLY:
OUTPUT STREAM sm_log_file CLOSE.
OUTPUT STREAM sm_tbl1 CLOSE.
OUTPUT STREAM sm_tbl2 CLOSE.
OUTPUT STREAM sm_tbl3 CLOSE.
END FINALLY.
CSV文件是以「,」分隔的,因此您需要將其中的分隔符更改爲逗號。 – 2013-03-20 11:54:20
斑點。這就是我發佈未經測試的代碼的原因。已編輯答案。 – 2013-03-21 10:30:19