Populați baza de date MySQL din fișierul de vidare postgresql (Programare, Mysql, Bază De Date, Postgresql, Pg Dump)

Nikhil Sharma a intrebat.

De fapt, am nevoie să populez baza de date MySQL dintr-un fișier SQL care a fost generat de postgresql ca fiind

pg_dump dbname > myfile.sql

Deci, dacă încerc să fac așa

mysql> source myfile.sql

Acest lucru, în mod evident, nu funcționează. Deși a populat 70% tabele, dar vreau să știu dacă există o modalitate de a realiza acest lucru ?

Din fișierul sursă al postgresql, pot să alimentez și să-mi populez baza de date MySql.

Comentarii

  • Acest lucru depinde cu adevărat de tipurile de date pe care le folosiți și dacă folosiți funcții și declanșatori personalizați. În plus, cu siguranță va trebui să portezi codul care utilizează acele tabele, eventual cu dificultate. A se vedea dba.stackexchange.com/q/17132/2129 –  > Por Bruno.
  • @Bruno: Nu avem niciun trigger sau dependență de baza de date în cod. –  > Por Nikhil Sharma.
2 răspunsuri
aleroot

Dacă doriți să migrați datele și structura din tabelul postgres în echivalentul mysql, cea mai ușoară modalitate este să utilizați un instrument de conversie a bazei de date, cum ar fi : ESF Data Migration Toolkit sau omologul opensource openDBCopy .

Dacă nu doriți sau nu puteți utiliza un instrument de migrare și trebuie să migrați doar datele, o altă modalitate simplă ar putea fi exportarea datelor în format CSV din PostgreSQL și apoi importarea lor în MySQL, astfel încât să puteți face acest lucru cu ajutorul unor comenzi precum :

ON Postgres (Export):

COPY (SELECT query) TO '/path to csv file -*.csv'; 

ON Mysql (Import):

load data infile 'path to csv file-*.csv' into table tablename fields terminated by ',' lines terminated by '
' . 

Dacă doriți totuși să continuați cu instrumentul de descărcare (pg_dump), puteți adăuga aceste opțiuni pentru a produce un fișier de descărcare pe care MySQL îl poate înțelege mai bine:

-d --data-only --no-owner --no-acl --attribute-inserts --disable-dollar-quoting --no-tablespaces

Rețineți că, în funcție de structura bazei de date sursă, este posibil să trebuiască să manipulați fișierul de vidare pentru a permite MysQL să înțeleagă fișierul de vidare generat …

Comentarii

  • Eu nu am nici schema și nici datele pentru MySql, deși am doar baza de date populată. –  > Por Nikhil Sharma.
javed

Cel mai bun mod de a migra fără a pierde datele este să folosiți migrările Mysql Workbench. Acest lucru tutorial explică cum se fac migrările. Câteva lucruri care nu sunt menționate în tutorial și care mi s-au părut importante sunt următoarele:

  • Instalați cele mai recente drivere postgres pentru a vă conecta la baza de date postgres sursă, modul de instalare a acestui driver poate fi găsit în acest articol. tutoria:
  • Descărcați și instalați driverele postgres odbc de la aici
  • După instalare, veți vedea driverele în „Open ODBC Administrator” 1. 2.
  • Utilizați „PostgreSQL Unicode(x64)” ca driver în timpul configurării bazei de date postgres sursă

Notă: utilizarea „PostgreSQL ANSI(x64) ” ca driver dă eroare în timpul migrărilor . Poate din cauză că datele mele conțin caractere Unicode.

Comentarii

  • Necesită autentificare Oracle. –  > Por Williams.