2011-02-02 10 views

Respuesta

5

Esta página wiki es un buen comienzo:
http://wiki.postgresql.org/wiki/Converting_from_other_Databases_to_PostgreSQL#MySQL

Editar: para responder a la segunda parte (lo que has estado perdiendo):

  • generate_series()
  • limitaciones diferibles
  • ver restricciones
  • consultas recursivas
  • funciones de tabla
  • expresiones de tabla comunes
  • funciones de ventanas
  • índice basado función
  • índices parciales
  • Búsqueda completa de tablas transaccionales
  • entidades SIG en tablas transaccionales
  • menos o INTERSECT operador

Edit2: cosas puede encontrarse con un problema

  • PostgreSQL es mucho más estricta en cuanto a los tipos de datos correspondientes (donde character_column = 1 generará un error)
  • no hay consultas entre bases de datos, si necesita algo por el estilo, las bases de datos de mapeo de MySQL para Es probable que los esquemas PostgreSQL sean más fáciles
  • Sin variables en las sentencias SQL regulares (set @nr = 1; seleccione @nr + 1 ...)
+0

No soy un usuario PG, así que podría estar equivocado, pero si mal no recuerdo, las secuencias en PG se actualizan incluso si la consulta 'insert' falla (por ejemplo, si el valor NULL se agrega al campo no NULL) . Esto es diferente de 'auto_increment' de MySQL, que se actualiza solo cuando se inserta correctamente. – binaryLV

+0

@binaryLV: innoDB usa bloqueos en auto_increment, eso puede ser un problema. El reinicio de auto_increment al valor más alto actual después del reinicio del servidor, puede ser otro problema. Simplemente no puede comparar auto_increment en MySQL y una secuencia en PostgreSQL o cualquier otra base de datos. Cosas diferentes. –

+0

Claro, son cosas diferentes, pero las personas que están acostumbradas al 'auto_increment' de MySQL tienden a usar secuencias en otros DBMS para simular' auto_increment'. Como autor está acostumbrado a MySQL, pensé que valdría la pena señalar que los resultados con secuencias podrían ser diferentes de aquellos con 'auto_increment'. – binaryLV

1

Leer la multa manual, capítulos 2 - 9 son los más importantes para empezar.

Asegúrate de realizar un correcto manejo de errores en PHP y leer todos los mensajes de error con cuidado: en la mayoría de los casos, te dice exactamente qué salió mal y cómo solucionarlo. El Apéndice A tiene todos los mensajes y códigos de error, los necesita. PostgreSQL no acepta entradas o consultas incorrectas, es correcto o se produce un error al iniciar la depuración. Y eso es bueno, menos errores y menos tiempo que gastará en secuencias de comandos.

pg_query_params() y pg_fetch_all() son algunas funciones geniales en PHP para interactuar con PostgreSQL, consulte el PHP manual.

+0

Acerca de 'pg_query_params()' y 'pg_fetch_all()' - es una cuestión de gustos, por supuesto, pero yo usaría PDO - es bastante útil cuando tienes que cambiar DBMS de vez en cuando. – binaryLV

+0

PDO es bueno, pero no obtendrá el mejor rendimiento posible: COPY no va a funcionar, insertos muy rápidos estarán fuera de cuestión con PDO. Tu código PHP también será más complejo usando PDO. –

+0

El rendimiento puede ser menor, pero valdría la pena probarlo si eso pudiera ser un cuello de botella. Personalmente no he tenido problemas con el rendimiento debido a PDO. Sobre el código es más complejo, ¿podría explicarlo? – binaryLV

Cuestiones relacionadas