在Pentaho Kettle中,假設您想在兩個相同的表A和B之間複製數據。如果存在自動遞增的列,那麼有一種方法可以在保存該列的值時將數據從A複製到B?自動遞增列數據庫的行爲是特定的還是已經找到了一個通用的解決方案?在Pentaho Kettle中保留自動遞增的列
0
A
回答
1
如果您有兩個表(關於其列的定義相同),並且兩個表中都有一個自動遞增列,然後用數據填充其中一個表,則您將增加表1中的數字。現在,爲了將這些行插入到鏡像表中,必須按照與插入的順序相同的順序從第一個表中提取它們,以便它們可以按照相同的順序插入到鏡像表中。然後,只有這樣,自動遞增的號碼纔會嗡嗡作響。這就是說,這將被認爲是脆弱的設計。
另一種方法是使表與列數據類型相同,但鏡像表中沒有自動遞增列。只需在鏡像表中將該列設置爲一個整數,而不具有任何自動增量功能。
1
蒂姆的回答是合理的。我通常會這樣做:使表B與表A相同,除了使表B的PK不是自動遞增列。 (試圖總是以相同的順序插入數據將是一個不好的主意,正如Tim提到的那樣,它肯定會很脆弱,但實際上,這會比這更糟糕,首先,你不能做批量插入。您需要分別提交每一行,而且通常不能確定下一個使用的值是下一個整數,這是DBMS挑選下一個值的責任,有很多情況下插入的下一個值不會下一個更大的整數)。
但是一個重要的細節是DBMS處理自動遞增字段的不同。在許多情況下,如果插入的值爲NULL,則自動遞增字段的行爲是提供值,但如果提供了值,則接受顯式值。在其他情況下,數據庫將拒絕嘗試將值插入自動遞增字段。
所以如果你面對的是前一種情況,那麼把表A和表B完全相同是沒有問題的。您的ETL作業將在表B中插入值,並且PK列的自動遞增特性將被忽略。
相關問題
- 1. 在Pentaho Kettle中動態讀取csv列
- 2. 保留mySQL自動遞增的ID?
- 3. Pentaho Kettle動態XML解析
- 4. Pentaho Kettle sql uid
- 5. 在MySQL中保留一個自動遞增的ID塊
- 6. Pentaho Kettle LDAP輸出
- 7. 自動遞增列
- 8. 在Pentaho Kettle中訪問bash變量
- 9. 重命名文件Pentaho Kettle
- 10. 奴隸服務器KETTLE pentaho
- 11. 在插入MongoDB之前刪除Pentaho Kettle中的空列
- 12. 無法比較Pentaho Kettle中的日期
- 13. Pentaho Kettle的建築在哪裏?
- 14. 副本表(創建表) - 不保留自動遞增主鍵
- 15. 自動遞增列主鍵
- 16. 控制自動遞增列?
- 17. 自動遞增兩列
- 18. 在Neo4j中自動遞增
- 19. 在Ubuntu 12.04.1上啓動Pentaho Kettle勺的問題LTS
- 20. MongoDB與Pentaho Kettle(PDI)的連接
- 21. SharedPreferences中的自動遞增?
- 22. 自動遞增
- 23. SQL自動遞增列如何DataTable中
- 24. 檢測在(自動遞增)序列
- 25. 自動遞增列表索引在Python
- 26. 在MySQL事務中保留自動增量ID
- 27. 在oracle 10g中添加自動增量和自動遞減列
- 28. Pentaho BI Platform Community Edition和Pentaho Kettle之間的區別是什麼?
- 29. FPDF-如何在列中提供自動遞增的序列號?
- 30. 的Upsert Postgres裏和自動遞增列