私はMonetDBマージテーブルを持っています。そのテーブルには約620万行のデータがあり、それをmerge_table
としましょう。これには14個のメンバーテーブルがあり、それぞれに月単位のデータが含まれています(たとえば、2017年1月のdata1701
)。データベースへのデータのロードとメンバテーブルの追加/削除を処理するJavaプログラムは、何とか同じテーブルをマージテーブルに複数回追加することができました。 、MonetDB - テーブルを複数回マージするためにテーブルが追加されましたが、それを削除または削除できません
その後
ALTER TABLE myschema.merge_table DROP TABLE data1708;
操作の成功(0.608ms):私の問題は、今私はMonetDBは、操作が成功したと言うにもかかわらず、マージテーブルからこれらの重複したテーブルを削除することができないということです私はテーブルを削除しようとすると:
DROP TABLE myschema.data1708;
のDROP TABLE:テーブルdata1708をドロップすることができない(データベースオブジェクトがwがありますHICH私は
merge_table
のメンバーをリストする場合、data1708
がまだあるもちろん、)それに依存します。
これらの重複を削除するために使用できる他の方法はありますか?
編集:
MonetDBバージョン11.25.23(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のTABLE「の一部であり、myschema.merge_table 「
は私のマージテーブルのIDは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
あなたの出力は、実際には、データ1707とデータ1708の3回の出現を示しています。 私はJDBC 2.25とMonetDBのバージョン Dec2016-SP5とJul2017を試しましたが、この動作の再現に失敗しました。 したがって、JDBCは問題のない場所にある可能性があります。 私はこの がどうして起こったかを理解する上でのさらなる提案はありません。あなたができることはおそらくデータベースをリロードすることであり、 あなたのアプリケーションのさまざまな改善が十分であることを願って これに再度実行してください。後であなたが今までにどのようにトリックする方法を見つけたら MonetDBにテーブルを何回も追加するには、 を修正できるのでお知らせください。 –
問題ありません、とにかく助けてくれてありがとうございます。ダンプからDB(およびマージテーブル)を再作成し、プログラムを少し修正し、最新のMonetDBバージョンに更新しました。私たちが何かを見つけたら、メーリングリストを通して知ってもらうでしょう。 – bem13