You are here

Sqlite의 Save As 구현

admin의 아바타

현재 데이타 관리를 sqlite를 사용하여 하고 있습니다.
이것 저것 신경 쓸거 없어 좋네요. ^^
save as 를 구현하려다보니.. 아래의 코드가 만들어 졌습니다.

src.sql 파일은 미리 존재 해야하고.. 상황에 따라.. 파일을 복사 해서 SaveAs 를 구현해도 되지만..
db1(src.sql) 이 열려 있는 상태에서는 아래와 같이 하는 방법이 좋은것 같네요.

#sqlite db1 "src.sql"
sqlite db2 "dest.sql"

db1 eval { SELECT name FROM sqlite_master WHERE type = "table" } row {
        set table $row(name)

        # 테이블 생성

        set query "PRAGMA table_info('$table');"
        set result [db1 eval $query]
        puts $result
        set query "CREATE TABLE $table ("
        foreach {cid name type null def pkey} $result {
                append query "$name $type, "
        }
        set query [string range $query 0 end-2]
        append query ")"

        db2 eval $query
       
        # 필드 값 삽입

        db1 eval "SELECT * FROM $table" row2 {
                set query "INSERT INTO $table VALUES("
                set columns $row2(*)
                set values [list]
                foreach column_name $columns {
                        append query "\"$row2($column_name)\", "
                }
                set query [string range $query 0 end-2]
                append query ")"
                db2 eval $query
               
        }
}

#db1 close

db2 close

포럼: