我想从我已连接的数据库创建一个文件格式的副本数据库。
创建它后,我想立即用它做一些事情(填充它,运行查询等)。
这可能吗?
示例.p:
/* Copy currently connected 'mydb' database into new .db file with same schema but without any database rows */
RUN copyCurrentDatabaseToNewFileBasedDatabase.p("mydb", "C:\mydatabase\mydatabase.db").
/* Disconnect from current 'mydb' database */
DISCONNECT mydb.
/* Connect to copied and empty 'mydatabase.db' database */
CONNECT VALUE("-db C:\mydatabase\mydatabase.db -H localhost -S 20000").
/* Populate the copied database with some data */
RUN populateCopyDatabase.p.
/* Perform queries on the copied and populated database */
RUN queryCopyDatabase.p.
您无法从 ABL 复制数据库。这是一个 shell 命令。
procopy 要求数据库离线(没有启动服务器,也没有单用户客户端)。
数据库在线时可以进行在线备份:
probkup online mydb mydb.bkup
然后恢复
prorest mydatabase mydb.bkup
然后您可以连接到新数据库(单用户-1或启动服务器进程并在共享内存中连接,无需-1)。但有一点需要注意。当仍然加载持久过程或加载基于类的对象来保存对“mydb”中的表的引用时,DISCONNECT 将被默默地忽略。