Tôi đã đi qua tài liệu cho Clickhouse và tôi không thấy tùy chọn CẬP NHẬT cũng như XÓA. Có vẻ như với tôi một hệ thống chỉ nối thêm của nó. Có khả năng cập nhật các bản ghi hiện có hoặc có một số giải pháp thay thế như cắt xén phân vùng có bản ghi trong đó đã thay đổi và sau đó chèn lại toàn bộ dữ liệu cho phân vùng đó không?Cập nhật dữ liệu trong Clickhouse
Trả lời
Bạn có thể thả và tạo các bảng mới, nhưng tùy thuộc vào kích thước của chúng, điều này có thể tốn rất nhiều thời gian. Bạn có thể làm một cái gì đó như thế này:
Để xóa, một cái gì đó như thế này có thể làm việc.
INSERT INTO tableTemp SELECT * from table1 WHERE rowID != @targetRowID;
DROP table1;
INSERT INTO table1 SELECT * from tableTemp;
Tương tự, để cập nhật hàng, trước tiên bạn có thể xóa nó theo cách này và sau đó thêm nó.
ClickHouse không hỗ trợ UPDATE/DELETE thực. Nhưng có vài cách giải quyết có thể:
Đang cố gắng để tổ chức dữ liệu theo một cách, đó là không cần phải được cập nhật. Bạn có thể ghi nhật ký các sự kiện cập nhật vào một bảng và sau đó tính toán các báo cáo từ nhật ký đó. Vì vậy, thay vì cập nhật các bản ghi hiện có, bạn thêm các bản ghi mới vào một bảng.
Sử dụng công cụ bảng thực hiện chuyển đổi dữ liệu trong nền trong khi hợp nhất. Ví dụ, (chứ không phải cụ thể) CollapsingMergeTree cơ bảng: https://clickhouse.yandex/reference_en.html#CollapsingMergeTree Cũng có những động cơ bảng ReplacingMergeTree (không phải tài liệu nào, bạn có thể tìm thấy ví dụ trong các thử nghiệm: https://github.com/yandex/ClickHouse/blob/master/dbms/tests/queries/0_stateless/00325_replacing_merge_tree.sql) Nhược điểm là bạn không biết, khi nền hợp nhất sẽ được thực hiện và sẽ bao giờ được thực hiện.
Ngoài ra hãy xem câu trả lời của samdoj.
- 1. Cập nhật SQL trong bộ dữ liệu
- 2. Cập nhật dữ liệu trong Arrayadapter
- 3. Cập nhật dữ liệu trong Slick Grid
- 4. Cập nhật JPA dữ liệu Spring @Query không cập nhật?
- 5. d3 cập nhật dữ liệu và cập nhật đồ thị
- 6. bảng cơ sở dữ liệu Cập nhật
- 7. Cập nhật cơ sở dữ liệu Android
- 8. Cập nhật dữ liệu VBO với glBufferSubData()
- 9. Cập nhật Dữ liệu sọc số
- 10. Cập nhật bộ dữ liệu h5py
- 11. ActiveRecord không cập nhật dữ liệu
- 12. Django: loaddata để cập nhật dữ liệu
- 13. Cập nhật bảng chèn dữ liệu VARBINARY
- 14. Làm cách nào để cập nhật dữ liệu trong indexedDB?
- 15. Cập nhật dữ liệu trong ng-repeat bằng Angular js
- 16. Làm thế nào để cập nhật dữ liệu trong UITableView?
- 17. Cập nhật đếm cột từ dữ liệu trong bảng khác
- 18. Cập nhật trường bit sql trong cơ sở dữ liệu
- 19. Làm thế nào để cập nhật dữ liệu trong Solr
- 20. Cập nhật thông tin trong cơ sở dữ liệu
- 21. Tự động cập nhật dữ liệu biểu đồ trong D3
- 22. Khuôn khổ thực thể Cập nhật cụ thể về cơ sở dữ liệu cập nhật cơ sở dữ liệu
- 23. không thể cập nhật dữ liệu trong cơ sở dữ liệu thông qua hình thức CakePHP
- 24. Cập nhật ứng dụng iOS với mô hình dữ liệu lõi đã cập nhật
- 25. cập nhật cơ sở dữ liệu sql với ContentValues và phương thức cập nhật
- 26. Ràng buộc dữ liệu không cập nhật khi TextBox trống
- 27. Cập nhật cơ sở dữ liệu trên __destruct()?
- 28. Cập nhật nhiều hơn một cột dữ liệu. Có thể
- 29. SQL lệnh MERGE để cập nhật dữ liệu
- 30. khay thông báo cập nhật cơ sở dữ liệu
Nhưng làm cách nào tôi cập nhật một bảng rất lớn. Ví dụ, nếu quá trình của tôi là thu thập rất nhiều hồ sơ, sau đó "đúng" 15% trong số đó? – Jonathan
Về cơ bản, chỉ cần cập nhật và xóa nhiều hàng? Trước tiên, bạn có thể chọn những hàng đó thành bảng tạm thời và chỉ thay đổi mệnh đề where thành 'WHERE rowID không có trong (SELECT rowID FROM targetTable') Bạn chỉ bị giới hạn ở đây bởi những gì bạn có thể chọn. – samdoj
Sẽ hiệu quả hơn khi đổi tên bảng thay vì thực hiện 'INSERT INTO table1 SELECT * từ tableTemp;' –