SQLite从表创建表

时间:2014-01-15 11:49:21

标签: sql sqlite

我需要在SQLite中创建表格的副本。结果表应该只有一个区别。其中一个名为“Desired_row”的行必须具有不同的类型(int - > bigint)。

如果我知道完整的源表结构,我可以创建一个具有相同字段的新表。

CREATE TABLE MyTableCopy(... , )

由于我有不同版本的表,我不完全知道它的完整结构来创建一个带有硬编码列的新结构。我需要一些可以执行此类CREATE TABLE Destination AS SELECT * FROM Source的操作,但不会在Destination表中创建Desired_row

有什么想法吗?提前谢谢!

2 个答案:

答案 0 :(得分:1)

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

你可以得到结构。您可以修改并创建新表。最后你可以

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

答案 1 :(得分:0)

在python中,您可以使用以下命令将名为“mytable”的sqlite表克隆/复制到新表“mynewtable”:

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表中获取create mytable语句,2)只更改表名,3)执行新的create mynewtable语句,最后4)填充新的从旧表中插入所有数据