我可以使用RedBean PHP ORM导出Sqlite数据库并导入MySQL吗?
我有一个简单的web应用程序,我一直在使用redbean PHP构建它,它的结构非常简单,有三种bean类型: 区域 建筑 人 所有关系都是排他性的1:多。因此,一个人只属于一栋建筑,一栋建筑属于一个区域 目前,为了便于开发,我一直在使用Sqlite3进行开发,但我想将数据移动到mySQL。我已经添加了很多数据 有没有一种简单的方法可以使用RedBean将所有bean导出到新的MySql数据库 我知道我可以搜索sqlite->MySQL/MariaDB转换器,但我也可能希望能够反过来使用它,使迁移站点非常容易移动/备份/更改数据库 以下是我尝试过的:我可以使用RedBean PHP ORM导出Sqlite数据库并导入MySQL吗?,php,mysql,sqlite,redbean,Php,Mysql,Sqlite,Redbean,我有一个简单的web应用程序,我一直在使用redbean PHP构建它,它的结构非常简单,有三种bean类型: 区域 建筑 人 所有关系都是排他性的1:多。因此,一个人只属于一栋建筑,一栋建筑属于一个区域 目前,为了便于开发,我一直在使用Sqlite3进行开发,但我想将数据移动到mySQL。我已经添加了很多数据 有没有一种简单的方法可以使用RedBean将所有bean导出到新的MySql数据库 我知道我可以搜索sqlite->MySQL/MariaDB转换器,但我也可能希望能够反过来使用它,使迁
R::setup('sqlite:/' . __DIR__ . '/data/database.db');
R::addDatabase('mysql', $MySqlConn );
$old_datas = R::findAll( 'area' );
R::selectDatabase( 'mysql' );
foreach ($old_datas as $bean) {
$new_area = R::dispense('area');
$new_area->importFrom( $bean );
$id = R::store( $new_area );
var_dump( $new_area ); // shows new data
}
var_dump( R::findAll( 'area' ) ); // returns empty array
在开始之前,我会说我个人并没有尝试过这样做,但由于您可以通过sqlite3控制台转储整个数据库,所以我的第一种方法是这样做,然后尝试将该文件导入MySQL 从sqlite控制台转储sqlite3数据库: sqlite>输出数据库_dump.sql sqlite>.dump sqlite>.quit 将.sql文件导入MySQL,如下所述: mysql>使用数据库名称 mysql>source path/to/file.sql您是否尝试过中提到的exportAll?exportAll非常棒,并且可以使用递归添加到mysql数据库中。我还没有走得太远,但看起来越来越有可能我必须像这样手动编写函数。我可以建议免责声明:我是作者吗?如果您愿意,有一个MySQL到PostgreSQL迁移的示例。它与ORM/数据库无关,尽管有一个集成的DBAL外键迁移系统,但您可以忽略它。我从来没有与红豆,但我很高兴写一个详细的答案,如果你有具体的要求。
R::setup('sqlite:/' . __DIR__ . '/data/database.db');
R::addDatabase('mysql', $MySqlConn );
$old_datas = R::findAll( 'area' );
R::selectDatabase( 'mysql' );
foreach ($old_datas as $bean) {
$new_area = R::dispense('area');
$new_area->importFrom( $bean );
$id = R::store( $new_area );
var_dump( $new_area ); // shows new data
}
var_dump( R::findAll( 'area' ) ); // returns empty array