在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. Pentaho Kettle动态XML解析
- 3. Pentaho Kettle sql uid
- 4. Pentaho Kettle LDAP输出
- 5. 自动递增列
- 6. 在Pentaho Kettle中访问bash变量
- 7. 奴隶服务器KETTLE pentaho
- 8. 重命名文件Pentaho Kettle
- 9. Pentaho Kettle的建筑在哪里?
- 10. 无法比较Pentaho Kettle中的日期
- 11. 控制自动递增列?
- 12. 自动递增两列
- 13. 在Neo4j中自动递增
- 14. MongoDB与Pentaho Kettle(PDI)的连接
- 15. SharedPreferences中的自动递增?
- 16. 自动递增
- 17. 检测在(自动递增)序列
- 18. 在MySQL事务中保留自动增量ID
- 19. Pentaho BI Platform Community Edition和Pentaho Kettle之间的区别是什么?
- 20. FPDF-如何在列中提供自动递增的序列号?
- 21. 从MS SQL过渡到Pentaho Kettle
- 22. 如何安排Pentaho Kettle转换?
- 23. Pentaho Kettle(数据集成)MongoDB聚合
- 24. 添加两个额外的列输入数据 - Pentaho Kettle
- 25. 自动递增ID
- 26. 火花数据帧保存到SQL表自动递增列
- 27. 我如何转置Pentaho Kettle中的表格从行到列没有标题列
- 28. 自动递增列其重置每年
- 29. 使用两列自动递增(laravel 4.1)
- 30. 自动递增列ID不从1