从Mysql迁移到postgre

时间:2015-10-13 11:53:51

标签: pdo

我正在努力将数据从MYSQL迁移到postgre。 如何在postgre表中插入mysql数据? 提前致谢 代码:

try {


$conexion = new PDO("mysql:host=$direccion;dbname=$base_d", $us, $contra);

$conexion->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);


            $consulta = $conexion->prepare('SELECT * FROM ' . $tabla_b);

            //Ejecuto la consulta 
            $consulta->execute();

            $consulta_array = $consulta->fetchAll(); 


            var_export($consulta_array);

$dbconn = pg_connect("host=$direccion2 dbname=$base_d2 user=$us2 password=$contra2")
or die('No se ha podido conectar: ' . pg_last_error());

$insercion= pg_copy_from($conexion, $tabla_b2, $consulta_array,",");


        } catch (PDOException $e) {

   echo "Error conectando con la base de datos: " . $e->getMessage();
        }
    }

1 个答案:

答案 0 :(得分:1)

您是否尝试过使用Pgloader

我发现将MySql迁移到Postgres非常快速有效。

以下是如何继续使用Pgloader的快速示例。

使用以下内容创建.load文件。您可以使用&#34排除不需要的行; - &#34;在前面)< / p>

load database  
     from      mysql://root@localhost/base_d
     into postgresql:///base_d

 WITH include drop, create tables, no truncate,  
      create indexes, reset sequences, foreign keys  

 -- SET maintenance_work_mem to '128MB', work_mem to '12MB', search_path to 'base_d'  
 CAST type datetime to timestamptz  
                drop default drop not null using zero-dates-to-null,  
      type date drop not null drop default using zero-dates-to-null  

 -- MATERIALIZE VIEWS film_list, staff_list  

 -- INCLUDING ONLY TABLE NAMES MATCHING ~/film/, 'actor'  
 -- EXCLUDING TABLE NAMES MATCHING ~<ory>  

 BEFORE LOAD DO  
 $$ create schema if not exists base_d; $$; 

请注意,这里的pgloader将受益于MySQL数据库中的元数据信息,以创建能够按照描述托管数据的PostgreSQL数据库,然后加载数据。

请注意,我们正在使用pgloader的MATERIALIZE VIEWS子句:此处的选定视图将使用其内容迁移到PostgreSQL。

here下载Pgloader。

现在您可以使用pgloader命令迁移数据。

$ pgloader base_d.load (保存上述内容的文件)

参考:http://pgloader.io/howto/mysql.html