我有一個具有大約6.2億行數據的MonetDB合併表,我們稱之爲merge_table
。它有14個成員表格,每個表格包含一些月度數據(例如2017年1月的data1701
)。處理將數據加載到數據庫和添加/刪除成員表的Java程序以某種方式設法多次將相同的表添加到合併表中。我的問題是,現在我無法從合併表中刪除這些複製的表,即使MonetDB說,手術很成功:MonetDB - 表添加到合併表多次,無法刪除或刪除它
ALTER TABLE myschema.merge_table DROP TABLE data1708;
操作成功(0.608ms)
然後,當我嘗試刪除該表:
DROP TABLE myschema.data1708;
DROP TABLE:無法刪除表data1708(有數據庫目標W這取決於它)
當然,當我列出的成員merge_table
,data1708
仍然存在。
是否有其他方法可以用來刪除這些重複項?
編輯:
MonetDB版本是23年11月25日(monetdbd [21491] 1.7(Dec2016-SP5))。 JDBC版本是2.19。
多次運行DROP TABLE命令會得到相同的結果。嘗試添加任何表中再次不起作用,所以它按預期工作不JDBC:
ALTER TABLE myschema.merge_table ADD TABLE data1708;
ALTER TABLE:表「myschema.data1708」已經是MERGE表的一部分「myschema.merge_table 「
我的合併表的編號是9020,於是我就建議的查詢與該休息:
SELECT * FROM sys.dependencies JOIN sys.dependency_types ON depend_type = dependency_type_id WHERE depend_id = 9020; +-------+-----------+-------------+--------------------+----------------------+ | id | depend_id | depend_type | dependency_type_id | dependency_type_name | +=======+===========+=============+====================+======================+ | 9668 | 9020 | 2 | 2 | TABLE | | 9722 | 9020 | 2 | 2 | TABLE | | 9776 | 9020 | 2 | 2 | TABLE | | 9830 | 9020 | 2 | 2 | TABLE | | 9884 | 9020 | 2 | 2 | TABLE | | 9938 | 9020 | 2 | 2 | TABLE | | 13891 | 9020 | 2 | 2 | TABLE | | 13945 | 9020 | 2 | 2 | TABLE | | 13999 | 9020 | 2 | 2 | TABLE | | 14053 | 9020 | 2 | 2 | TABLE | | 14107 | 9020 | 2 | 2 | TABLE | | 14161 | 9020 | 2 | 2 | TABLE | | 14215 | 9020 | 2 | 2 | TABLE | | 14269 | 9020 | 2 | 2 | TABLE | +-------+-----------+-------------+--------------------+----------------------+
SELECT * FROM sys.objects WHERE id = 9020; +------+------------+------+ | id | name | nr | +======+============+======+ | 9020 | data1607 | 1 | | 9020 | data1608 | 2 | | 9020 | data1609 | 3 | | 9020 | data1610 | 4 | | 9020 | data1611 | 5 | | 9020 | data1612 | 6 | | 9020 | data1701 | 7 | | 9020 | data1702 | 8 | | 9020 | data1703 | 9 | | 9020 | data1704 | 10 | | 9020 | data1705 | 11 | | 9020 | data1706 | 12 | | 9020 | data1707 | 13 | | 9020 | data1707 | 12 | | 9020 | data1708 | 13 | | 9020 | data1707 | 12 | | 9020 | data1708 | 13 | +------+------------+------+
嘿Joeri, 我已經編輯與查詢結果我的問題。不幸的是,Java程序不是我的,但它現在正在修正,不包括某些假設。儘管問題可能出現在JDBC驅動程序中。 – bem13
您的輸出確實顯示了三次data1707和兩次data1708。 我嘗試使用JDBC 2.25和MonetDB版本 Dec2016-SP5和Jul2017但未能重現此行爲。 因此,JDBC可能不是問題所在。 恐怕我沒有進一步的建議瞭解這個 是怎麼發生的。你可以做的最好的可能是重新加載數據庫,並希望對你的應用程序的各種改進足以讓 不會再次遇到這個問題。如果您後來發現如何欺騙 MonetDB多次添加表,請告訴我們,以便我們 可以修復它。 –
沒問題,謝謝你的幫助。我們從轉儲中重新創建了數據庫(和合並表),將程序修改了一些並更新爲最新的MonetDB版本。如果我們弄清楚什麼,我一定會通過郵件列表讓你們知道。 – bem13