두 개의 ETS 테이블을 하나의 ETS 테이블로 통합합니다. 내가 아는 유일한 방법은 세 번째 테이블을 만들고 두 번째 테이블의 레코드를 세 번째 테이블에 삽입하는 것입니다. 더 좋은 방법이 있습니까?Union ETS 테이블
0
A
답변
2
ets:insert은 튜플 목록을 허용합니다. 반면에 ets:tab2list은 ets 테이블을 튜플 목록으로 내 보냅니다. 즉, 하나의 테이블을 다른 테이블로 쉽게 임포트 할 수 있습니다.
노조는 아니지만 세 번째 테이블을 만들지 않고 이전 테이블을 모두 포함하는 단일 테이블로 끝납니다. 이는 달성하려는 것으로 보여집니다. 테이블 세트 인 경우
:
약간의 예 :
ets:new(list_a,[named_table]). ets:new(list_b,[named_table]). ets:insert(list_a,{one,1}). ets:insert(list_b,{two,2}). ets:insert(list_b,{three,3}). ets:insert(list_a,ets:tab2list(list_b)). ets:tab2list(list_a). % list_a = [{three,3},{two,2},{one,1}]
동일한 키의 경우에는 어떻게됩니까은 (erlang doc)와 함께 작업하는 ETS 테이블의 유형에 따라 달라집니다 삽입 된 개체의 키가 표의 모든 개체의 키와 일치하면 이전 개체가 대체됩니다. 테이블이 ordered_set이고 삽입 된 개체 의 키가 테이블의 개체와 동일한 키와 비교되는 경우 이전 개체 도 대체됩니다. 목록에 일치하는 키가 이고 두 개 이상의 객체가 포함되어 있고 테이블이 집합 인 경우 하나가 삽입되고 은 정의되지 않습니다. ordered_set에도 똑같은 일이 있지만 키가 동일하면 이됩니다.
게다가 덧글을 쓰지 않는 ets:insert_new을 사용할 수 있습니다.
관련 문제
- 1. Erlang 공유 ETS 테이블
- 2. ETS 테이블 생성 오류
- 3. Erlang Ets 노드 사이의 테이블
- 4. UNION 테이블 이름 오류
- 5. MySQL의 테이블 UNION 이슈
- 6. gen_server 상태에 대한 ets 테이블 사용
- 7. mySQL union 리턴 테이블 이름
- 8. MySQL의 UNION,이 개 테이블
- 9. Mysql UNION 테이블 최대 날짜
- 10. JPA 쿼리의 Union - 동일한 테이블
- 11. UNION 안에있는 SELECT 테이블 이름
- 12. 확인 특정 테이블 MySQL의 UNION
- 13. ETS 스토리지의 성장을 제한하십시오.
- 14. ets : ets (timeseries, model = "MAM")의 오류 : 비 계절 데이터
- 15. ETS 매칭 문제
- 16. ets() error in R
- 17. ETS 테이블에서 데이터 검색
- 18. Erlang ETS Match
- 19. Id의 Pid 매핑을 ets 테이블 또는 gen_server의 상태에 저장해야합니까?
- 20. Erlang ETS 테이블 대 메시지 전달 : 최적화 관련 문제?
- 21. mySQL fulltext union search return 테이블 이름
- 22. UNION ALL을 사용하여 두 테이블 결합하기
- 23. MySQL UNION 또는 중간 테이블 생성?
- 24. UNION 테이블 이름을 가져 오는 방법은 무엇입니까?
- 25. UNION
- 26. MySQL은 (CONST 대 UNION 대 SELECT UNION)
- 27. erlang ets 이상한 행동 선택
- 28. 사용 후 ETS 테이블을 정리하는 방법은 무엇입니까?
- 29. MySQL UNION COUNT
- 30. UNION ALL
감사하지만 세 번째 테이블을 만들기위한 다른 방법 (개념을 개념적으로 표에 삽입하는 것)은 없습니다. 몇 백 메가 바이트가 들어있는 테이블을 가지고 작업합니다. 그래서이 방법은 나를위한 것이 아닙니다. 전체 테이블 영역을 복사 할 수있는 방법이 필요합니다. – kirild
다른 ETS 테이블의 각 레코드를 쓰는 첫 번째 ETS 테이블을 반복 할 수도 있습니다 (첫 번째 및 다음 함수 또는 단순히 폴드를 사용할 수 있습니다). – Berzemus