我正在努力将数据从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();
}
}
答案 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 (保存上述内容的文件)