2014-01-15 3 views
0

SQLite에 테이블 복사본을 만들어야합니다. 결과 테이블에는 단 하나의 차이 만 있어야합니다. 'Desired_row'라는 행 중 하나에 다른 유형 (int ->bigint)이 있어야합니다.SQLite 테이블에서 테이블 만들기

전체 소스 테이블 구조를 알고 있다면 동일한 필드가있는 새 테이블을 만들 수 있습니다.

CREATE TABLE MyTableCopy(... ,) 

다른 버전의 테이블을 가지고 있기 때문에 전체 구조가 하드 코딩 된 열이있는 새로운 구조를 만들지는 정확히 알 수 없습니다. 이 CREATE TABLE Destination AS SELECT * FROM Source과 같은 작업을 수행 할 필요가 있지만 대상 테이블에 Desired_row을 만들지 않습니다.

아이디어가 있으십니까? 미리 감사드립니다!

답변

1

SELECT sql FROM sqlite_master WHERE type='table' AND name='mytable' 

당신은 구조를 얻을 수 있습니다. 이렇게하면 새 테이블을 수정하고 만들 수 있습니다. 그리고 마지막으로 할 수 있습니다 사용 "mynewtable"새 테이블에 "MYTABLE"라는 이름의 sqlite가 테이블 복사/복제 할 수 있습니다 파이썬에서

INSERT INTO 'MyTableCopy' (*) SELECT * FROM 'mytable' 
+0

As 나는이 해결책으로 스크립트를 만드는 방법이 없다는 것을 알고있다. 받은 SQL을 프로그램 코드로만 수정할 수 있습니다. 답장을 보내 주셔서 감사합니다! –

0

:

conn = sqlite3.connect(file) 
cur = conn.cursor() 
cur.execute("SELECT sql FROM sqlite_master WHERE type='table' AND name='mytable'") 
txt=(cur.fetchone()[0]) 
txt=txt.replace("mytable","mynewtable") 
cur.execute(txt) 
cur.execute("INSERT INTO mynewtable SELECT * FROM mytable") 

내가이 방법은 다른 유사하게 작동합니다 생각을 언어 : 1) sqlite_master 테이블에서 mytable 문 작성 2) 테이블 이름 변경 3) 새 create mynewtable 문 실행 4) 이전 테이블의 모든 데이터 삽입으로 새 테이블 채우기

관련 문제