我目前正在编写一个(C ++)程序,它将csv文件读入Firebird数据库。在算法期间,我的表被修改。 由于整个阅读过程需要几分钟,我已经将阅读部分作为可选项,因此如果数据库已经填满数据,用户可以决定不更新它。
当多次运行程序时,我想使用原始数据,而不是上次运行期间修改过的数据,所以我想做类似的事情
创建table table1_backup as(select * from table1);
然后,重新启动程序时(如果我们不想更新数据)
删除表table1; 将table table1创建为(select * from table1_backup);
看起来,在Firebird中复制表格并不是这样的。
还有其他想法吗?
答案 0 :(得分:0)
您无法在Firebird中的另一个表中创建表格。另请参阅Does Firebird support creating tables using SELECT statement?。
根据评论Arioch 'The的建议,您可能正在寻找global temporary tables。全局临时表具有持久性DDL,但数据仅对单个事务(on commit delete rows
)可见或仅对插入数据的连接(on commit preserve rows
)可见。
在对数据库进行永久性更改之前,您可以使用临时表作为临时区域。