Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我可以使用RedBean PHP ORM导出Sqlite数据库并导入MySQL吗?_Php_Mysql_Sqlite_Redbean - Fatal编程技术网

我可以使用RedBean PHP ORM导出Sqlite数据库并导入MySQL吗?

我可以使用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转换器,但我也可能希望能够反过来使用它,使迁

我有一个简单的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