SpatiaLite DB에서 테이블 이름을 올바르게 바꾸려면 어떻게해야합니까?


11

SpatiaLite의 공간 계층 (테이블)에는 트리거, 인덱스 및 geometry_columns테이블의 항목 (최소한)을 포함하여 다양한 지원 개체 및 메타 데이터가 포함됩니다 . 공간 레이어를 손상시키지 않도록 필요한 모든 변경 사항을 한 번에 처리하는 GUI 또는 (필요한) 모든 필수 변경 사항에 대한 문서를 찾고 있습니다.

테이블에는 다음이 있습니다.

  1. 의 항목 geometry_columns.f_table_name.
  2. 이름이 5 인 트리거 [prefix]_[table_name]_geometry. 여기서 접두사는 트랜잭션 롤백인지 인덱스 업데이트인지를 나타냅니다.
  3. 3 개의 공간 인덱스 이름 idx_[table_name]_geometry[_suffix]

QGIS DB Manager와 SpatiaLite-GUI의 두 응용 프로그램에서이 작업을 시도했습니다.

QGIS DB Manager는 다음과 같은 효과가 나타납니다.

  1. geometry_columns새 테이블 이름으로 올바르게 업데이트
  2. 트리거의 이름을 바꾸지 않습니다. 트리거 정의는 부분적으로 수정되어 BEFORE [INSERT|UPDATE|DELETE]새 테이블 이름 을 참조하지만 조건은에서 이전 이름을 계속 검색합니다 geometry_columns.
  3. 공간 인덱스의 이름을 바꾸지 않습니다. 트리거가 여전히 오래된 인덱스 이름을 참조하기 때문에 이것이 중요한지 확실하지 않습니다.

SpatiaLite-GUI에서 Maintenance (유지 관리) → Rename table (테이블 이름 바꾸기)을 선택하면 SQL ALTER TABLE문의 스텁 만 가져옵니다 . 이것은 간단한 SQL이며 QGIS DB Manager보다 훨씬 적습니다. 새 테이블 이름을 입력하면 테이블 이름이 바뀝니다. 다른 효과 :

  1. 에서 이름 이 바뀌지 않습니다.geometry_columns.f_table_name 즉, 많은 GIS가 테이블을 공간 레이어로 보지 않습니다.
  2. 트리거의 이름을 바꾸지 않습니다. 트리거 정의는 부분적으로 수정되어 BEFORE [INSERT|UPDATE|DELETE]새 테이블 이름 을 참조하지만 조건은에서 이전 이름을 계속 검색합니다 geometry_columns.
  3. 공간 인덱스의 이름을 바꾸지 않습니다. 트리거가 여전히 오래된 인덱스 이름을 참조하기 때문에 이것이 중요한지 확실하지 않습니다.

Spatialite-GUI는 올바른 항목을 추가 geometry_columns(SRID, 지오메트리 유형 및 차원을 지정해야 함)하고 공간 인덱스를 작성 또는 재 구축하며 트리거 를 복구하는 지오메트리 열을 복구하는 옵션을 제공합니다. 이러한 함수 중 하나는 오래된 테이블 행, 트리거 또는 인덱스를 제거하여 DB에 많은 (해를 끼치 지 않지만 성가신) schmutz를 만듭니다.


3
SpatiaLite에서 모양 파일을 제거하려는 경우 SpatiaLite에서 필드를 재 배열, 이름 바꾸기, 삭제하기 위해 "테이블 관리자"가 크게 필요하다고 생각합니다. 그러나 알 수없는 이유로 내가 아는 한 도움이되는 도구는 없습니다. 크라우드 펀딩 이니셔티브를위한 좋은 프로젝트 일 것입니다!
Bernd V.

어떤 버전의 patialite-gui가 있습니까?
user30184

SpatiaLite-GUI 1.7.1.
Lee Hachadoorian

답변:


2

새 테이블 이름으로 테이블을 복사하고 데이터를 복사 할 때 열의 이름을 바꾸어야합니다. 테이블 관리자 함수는 이것에 이상적이지만 아직 GUI에는 작성되지 않았습니다. 아래 링크는 SQLite의 샘플 코드로 이에 대한 공식 정보를 보여줍니다. SpatiaLite는 SQLite의 일부이므로 코딩이 동일합니다. 행운을 빕니다!

https://blog.xojo.com/2013/12/04/renaming-columns-in-sqlite-tables/


질문은 열이 아닌 테이블 이름을 바꾸는 것에 관한 것 입니다. 링크 된 페이지 에서이 명령문에 대해 설명 하지만이 문제가 공간 데이터베이스에 적합하지 않은 이유를 이미 질문했습니다. ALTER TABLE
이 하차 도리안

귀하의 의견을 염두에두고 이것을 자세히 살펴본 후에는이를 수행하고 방아쇠 및 기타 구조적 구성 요소를 유지하는 적절한 방법이 있다고 생각하지 않습니다. 코드를 다시 작성해야하거나 테이블을 내보내려고 할 때 (그렇게하려는 경우) QGIS의 db 관리자에서 다른 이름을 사용하십시오.
Julia
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.