2015-10-13 2 views
0

Я работал над переносом данных из MYSQL в postgre. Как я могу вставить данные mysql в таблицу postgre? Заранее спасибо код:Миграция из Mysql в postgre

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

Вы пробовали работать с Pgloader?

Я нашел это очень быстрый и эффективный способ миграции MySql в Postgres.

Вот краткий пример продолжения работы с Pgloader.

Создать .load-файл с нижеследующим содержимым. (вы можете исключить нежелательные линии с «-» перед)

load database 
    from  mysql://[email protected]/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, способной размещения данных, как описано, а затем загрузить данные.

Обратите внимание, что мы используем предложение MATERIALIZE VIEWS для pgloader: выбранные представления здесь будут перенесены на PostgreSQL с их содержимым.

Загрузить Pgloader с here.

Теперь вы можете использовать команду pgloader для переноса данных.

$ pgloader base_d.load (файл, в котором вы сохранили выше содержание)

Ссылка: http://pgloader.io/howto/mysql.html

+0

Хотя это теоретически может ответить на вопрос, [было бы предпочтительнее] (// meta.stackoverflow.com/q/8259), чтобы включить основные части ответа здесь и предоставить ссылку для справки. –

+0

Спасибо за комментарий, я попытался выдать более подробную информацию для тренировки вышеуказанного требования. – Jehoshuah

+0

Ницца. Для меня это помогает. С уважением. –

Смежные вопросы