2017-06-01 72 views
0

我正在創建一個Spring批處理應用程序,以便將數據從舊Sybase數據庫遷移到可加載到目標系統的csv文件。用於臨時表(創建並插入)和存儲過程執行組合的彈簧批處理讀取器

我在設計閱讀器配置時遇到問題。

可能對讀者輸入的組合:

  1. 直接SQL查詢(JdbcCursorReader適用) - 沒有問題
  2. 存儲過程(存儲過程的讀者是合適的) - 沒有問題
  3. 下面的步驟執行得到輸入的序列 - 我的問題
    • 創建臨時表
    • 插入值到臨時表
    • 執行存儲過程(從臨時表,過程他們讀取輸入和輸出寫入到相同的臨時表)從插入的臨時表
    • 讀數據

我被這個需求#3封鎖,請幫我解決問題。

注意:我正在使用Spring Batch的動態配置進行Spring啓動應用程序。

ItemReader<TreeMap<Integer, TableColumn>> itemReader = ReaderBuilder.getReader(sybaseDataSource, sybaseJdbcTemplate, workflowBean); 

ItemProcessor<TreeMap<Integer, TableColumn>, TreeMap<Integer, TableColumn>> itemProcessor = ProcessorBuilder.getProcessor(workflowBean); 

ItemWriter<TreeMap<Integer, TableColumn>> itemWriter = WriterBuilder.getWriter(workflowBean); 

JobCompletionNotificationListener listener = new JobCompletionNotificationListener(); 

SimpleStepBuilder<TreeMap<Integer, TableColumn>, TreeMap<Integer, TableColumn>> stepBuilder = stepBuilderFactory 
     .get(CommonJobEnum.SBTCH_JOB_STEP_COMMON_NAME.getValue()).allowStartIfComplete(true) 

     .<TreeMap<Integer, TableColumn>, TreeMap<Integer, TableColumn>>chunk(10000).reader(itemReader); 

if (itemProcessor != null) { 
    stepBuilder.processor(itemProcessor); 
} 

Step step = stepBuilder.writer(itemWriter).build(); 

String jobName = workflowBean.getiMTWorkflowTemplate().getNameWflTemplate() + workflowBean.getIdWorkflow(); 
job = jobBuilderFactory.get(jobName).incrementer(new RunIdIncrementer()).listener(listener).flow(step).end().build(); 

jobLauncher.run(job, jobParameters); 

回答

0

'Sybase'是一家公司的名稱(幾年前被SAP收購)。在Sybase名稱下生成(至少)4種不同的數據庫產品... Adaptiver Server Enterprise(ASE),SQL Anywhere,IQ,Advantage DB。

如果您聲明您嘗試從哪個Sybase數據庫產品中提取數據,它將有所幫助。


假設你正在談論ASE ...

如果你需要做的是拉出來的數據Sybase表的,那麼爲什麼通過編寫SQL,特效,春代碼的所有跳火圈,等等?或者這是一些家庭作業(但即便如此,爲什麼要走這條路)?

只需使用bcp(Sybase數據服務器附帶的OS級實用程序)從Sybase表中提取數據即可。使用幾個命令行標誌,您可以告訴bcp將數據寫入分隔文件。

+0

嗨馬克,感謝您的回覆。是的,ASE。我正在開發一個動態ETL工具(需求),它接收輸入(從一些設置表)作爲sql(帶/不帶參數),存儲過程名稱(帶/不帶參數/標準),多sql +存儲過程與多個結果集執行等等所有這些可能的組合。 BCP不適合我們。所以我們關注上述方法。如果你有任何想法,請投射一些燈。 – vijaidhas

相關問題