2011-03-31 4 views

답변

13

SQLite 셸에서는 .schema 명령어를 사용하고 GREP를 사용하여 REFERENCES을 포함하는 줄을 필터링합니다. SQLite는 저장소에 shell.c에서

, 트렁크에 오늘날의 버전, 두 개의 질의 :

SELECT sql 
    FROM (
     SELECT sql sql, type type, tbl_name tbl_name, name name 
      FROM sqlite_master 
     UNION ALL 
     SELECT sql, type, tbl_name, name 
      FROM sqlite_temp_master 
     ) 
WHERE tbl_name LIKE shellstatic() 
    AND type != 'meta' 
    AND sql NOTNULL 
ORDER BY substr(type, 2, 1), name 

SELECT sql 
    FROM (
     SELECT sql sql, type type, tbl_name tbl_name, name name 
      FROM sqlite_master 
     UNION ALL 
     SELECT sql, type, tbl_name, name 
      FROM sqlite_temp_master 
     ) 
WHERE type != 'meta' 
    AND sql NOTNULL 
    AND name NOT LIKE 'sqlite_%' 
ORDER BY substr(type, 2, 1), name 

두 번째는 아마 당신을 위해 무엇을 찾고 있습니다.

+0

안녕하세요, Benoit. 나는 안드로이드 클라이언트에서이 작업을 수행 할 것이므로 SQLite 셸에 액세스 할 수 없다는 것을 언급해야한다. : –

+0

@Fergal Moran : updated Answer – Benoit

+1

안녕하세요 Benoit - 이것은 모든 테이블에 대한 전체 ddl을 제공합니다. 이는 유용하지만 여전히 외래 키 특정 항목을 구문 분석하는 문제로 남겨 둡니다. 나 PRAGMA foreign_keys "SELECT tbl_name FROM sqlite_master where type = 'table'"의 결과를 호출하지만 더 쉬운 방법을 찾으려고합니다. –

관련 문제