我需要在SQLite
中创建表格的副本。结果表应该只有一个区别。其中一个名为“Desired_row”的行必须具有不同的类型(int
- > bigint
)。
如果我知道完整的源表结构,我可以创建一个具有相同字段的新表。
CREATE TABLE MyTableCopy(... , )
由于我有不同版本的表,我不完全知道它的完整结构来创建一个带有硬编码列的新结构。我需要一些可以执行此类CREATE TABLE Destination AS SELECT * FROM Source
的操作,但不会在Destination表中创建Desired_row
。
有什么想法吗?提前谢谢!
答案 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)填充新的从旧表中插入所有数据