1. kettle插入更新問題
要看你插入更新步驟中選擇的比對的欄位是什麼,kettle中的插入更新這個步驟是根據比對欄位來執行插入,或者更新的
2. kettle表輸入完成但是插入更新一直沒反應
如果不修改,默認的格式是「常規」,會導致原本以文本格式儲存的數字、或者日期格式的內容等出現錯亂。比如原來如果是0001的內容,會自動被辨識為1,原來的日期可能會變成五位數字。最好還是根據各個列的值設定一下屬性。
3. 求教kettle判斷插入和更新的問題
如果你用的是INNODB資料庫,有一個最簡單有效的調整,就是將
INI文件
裡面的下面參數調整:原始:innodb_flush_log_at_trx_commit=1調整為:innodb_flush_log_at_trx_commit=2具體什麼意思就不解釋了,試了效果好再去找
度娘
4. kettle怎麼實現重復抽取更新數據
插入/更新
1.你是否遇到了需要將mysql資料庫中的所有表與數據遷移到Oracle。
2.你是否還在使用kettle重復的畫著:表輸入-表輸出、創建表,而煩惱。下面為你實現了一套通用的資料庫遷移流程。技術引導:實現之初,在kettle提供的例子中找到了一個類似的(samplesjobsprocessalltables)。通過相關改造,終於達到目標。實現過程解剖:整套流程分為:2個job,4個trans。使用到的Trans插件:表輸入、欄位選擇、復制記錄到結果、從結果獲取記錄、設置變數、自定義java腳本、表輸出。1.大job。2.要遷移的源庫表名稱獲取,並設置到結果集,為下面的job使用。
3.配置子job為前面的每一條記錄(即每個表)執行一次該子job4.下面是子job。5.獲取記錄中的表名稱,並設置為到變數。6.讀取當前表的結果信息,並在目標庫中創建表(這個是難點)。因為只需要獲取抓取要抽取表的結構信息,故在sql後面加上where1=2。下面代碼是創建目標庫表。Java代碼publicbooleanprocessRow(StepMetaInterfacesmi,StepDataInterfacesdi)throwsKettleException{//First,getarowfromthedefaultinputhop//Object[]r=getRow();org.pentaho.di.core.database.DatabaseMetadbmeta=null;java.util.Listlist=getTrans().getRepository().readDatabases();//3.x中獲取資源庫的所有資料庫連接信息用getDatabases();if(list!=null&&!list.isEmpty()){for(inti=0;i
5. kettle數據同步如何更新
一般通過增量時間戳來新增和更新數據,先刪除再插入,也有實時更新,這就需要資料庫的操作日誌了
6. kettle 的mysql資料庫中表輸入中如何編輯sql語句
1、在文件->新建裝換。新建轉換後在左邊的主對象樹中建立DB連接用以連接資料庫。建立資料庫連接的過程與其他資料庫管理軟體連接資料庫類似。
2、簡單的數據表插入,更新在面板中選擇「核心對象」,在核心對象裡面選擇輸入到表輸入,用滑鼠拖動到右邊面板。
3、雙擊拖過來的表,可以編輯表輸入。選擇資料庫連接和編輯sql語句,在這一步可以點擊預覽,查看自己是否連接正確。
7. kettle 更新是更新源庫還是目標庫
開始實驗:
1. 查詢scott用戶下emp表的數據
2. hyl用戶下創建實驗表(emptest)
3. 查詢hyl用戶下實驗表(emptest)數據
4. 配置kettle
點擊「沒有資源庫」啟動,之後添加資料庫連接即可,如下圖:
新建一個轉換,如下圖:
點擊「表輸入」,拖動到面板內,如下圖:
同理,在輸出項目中,選擇「插入/更新」添加到面板內,如下圖:
點擊「表輸入」圖標,然後按住「SHIFT」,連接到「插入/更新」圖標,如下圖所示:
雙擊「表輸入」圖標,點擊「新建」按鈕,進入到如下配置界面,參考圖下設置,完成資料庫連接配置並進行測試,如下圖所示:
完成「表輸入」中資料庫連接設置後,接下來按同樣的方法對「插入/更新」圖標下的資料庫連接進行配置,參考配置如下:
完成,「表輸入」和「插入/更新」的資料庫連接配置後,雙擊「表輸入」,進入如下界面,選擇資料庫連接為「scott」,也就是我們之前的數據源資料庫,點擊「獲取SQL查詢語句」,如下圖所示:
選擇我們要抽取的表,如下所示:
按提示點擊「是」即可,如下圖:
編寫sql腳本,這里我們為使實驗簡單,源端和目標端的表結構是相同的,如下圖所示:
雙擊「插入/更新」圖標,對目標端進行配置,選擇連接的目標端資料庫hyl,點擊「瀏覽」獲取目標表,如下圖所示:
然後點擊「獲取欄位」,你就可以看到源端和目標端的對應關系。點擊「獲取更新欄位」你就可以看到我們要更新的欄位都有哪些,如下圖所示:
運行前,需要先保存kettle項目,進行保存,如下圖:
萬事俱備,只需運行了,如下圖所示:
完成抽取後,會提示完成,如下圖所示:
5. hyl用戶驗證實驗表抽取數據情況
至此,我們完成了將scott的emp表數據抽取到hyl用戶下的emptest表中,完成實驗。
8. kettle 插入/更新 和表輸出 有什麼區別
插入/更新
1、 步驟名稱:要寫入數據的表的schema名稱。
2、 commit size:提交之前要改變的行數(插入/更新)。
3、 不執行任何更新:如果被選擇,則不執行任何更新,只允許插入。
4、
用來查詢的關鍵字:可以指定欄位值或者比較符。可以用以下比較符:>、>=、=、<>、<、<=、between、like、is
null、is not null
5、 用來查詢的關鍵字:輸入用來指定記錄的關鍵字。
6、 更新欄位:指定想要插入/更新的欄位。
備註:還有一個更新的插件,它只能執行更新操作,完全可以由這個插件來代替
刪除
執行刪除操作。
注意:在輸出中,插入/更新、刪除、更新對應的是資料庫的增、刪、改。
Excel輸出
利用這個步驟,可以寫入數據到一個或者多個文件中。
1、 文件名和擴展名:可以使用變數。
2、 頭部、尾部:給文件添加頭部和尾部。
3、 Split every…rows:分割數據到幾個輸出文件中。
4、 Use template:使用模板
5、 追加excel模板:是否將Excel輸出添加到指定的Excel模板中。
Access輸出
1、 資料庫名:注意要寫入擴展名,否則輸出的文件名不包含擴展名」.mdb」
2、 創建資料庫:選中則創建資料庫。
3、 Target table:表名。
4、 Create table:選中則創建數據表。
5、 Commit size:定義輸出數據時的提交尺寸。
XML輸出
1、
文件名中包含步驟號碼:如果你在多個拷貝中運行一個步驟,在文件擴展名的前面,將包含拷貝的號碼。
2、 分割每一個行:每個xml文件中包含的記錄數。0表示不分割。
3、 正在編碼:在XML文件頭部指定。
4、 欄位選項卡
5、 元素名稱:xml文件使用的元素的名稱,不指定,則元素名稱和欄位名相同。
6、 10進制:小數點可以是」.」或者」,」
7、 分組:分組符可以是」,」或者」.」
8、 空:表示當欄位值為空時,則用此欄位值代替。
還有很多輸出插件,它們的圖標如下圖所示:
總結:輸出插件和輸入插件的種類差不多,輸出插件里插入/更新、
更新、還有表輸出,這幾個插件有功能相同的地方,我們可以根據需求來選擇需要的插件,因為不同的插件執行的效率也不一樣,雖然插入/更新插件具備了更新插
件的功能,但是我們都知道功能多的就是沒有功能單一的效率高,所以我們可以根據需求來決定應該使用哪個插件更好一些。還有刪除插件,這個插件也很好用,可
以執行批量刪除,效率也很高。