2009-09-02 19 views
14

He mirado alrededor y no puedo encontrar nada que responda a esta pregunta específica.migrar datos de MS SQL a PostgreSQL?

¿Cuál es la forma más simple de mover datos de un MS SQL Server 2005 DB a una instalación de Postgres (8.x)?

He examinado varias utilidades como "Full Convert Enterprise", etc., y todas fallan por una razón u otra, desde extraños errores que hacen que explote hasta la inserción de nulos en lugar de datos reales (¿wth?) .

estoy mirando a una base de datos con toda la tabla a excepción de una sola vista, procsos hay almacenados, funciones, etc.

En este momento estoy a punto de escribir una pequeña utilidad que lo haga por mí, Simplemente no puedo creer que sea necesario. Sin duda hay algo en algún lugar que puede hacer esto? No estoy demasiado preocupado por el costo, aunque es preferible gratis :)

Respuesta

6

Eche un vistazo a Software Catalogue. Debajo de Administration/development tools veo DBConvert for MS SQL & PostgreSQL. Probablemente hay otras herramientas similares en la lista.

+1

perfecto, eso es exactamente lo que estaba buscando. Lo tomé como prueba, me gustó, así que compré la versión completa y funciona como un campeón. Para aquellos que no buscan esta solución específica, pero soluciones similares, ofrecen herramientas para convertir y sincronizar entre MSSQL, Postgres, Oracle, MS Access, Firebird, etc. Solo puedo hablar de las conversiones de MSSQL/Postgres, pero si esas conversiones son una indicación, este paquete de software bien vale los $ 79. – Fred

+0

@Milen A. Radev, +1 ¡Genial! – Meem

-1

Bueno, hay enlaces .NET para MS SQL Server 2005 (obviamente) y también para PostgreSQL. Por lo tanto, solo se necesitarían unas pocas líneas de código para codificar un programa que podría transferir datos de forma segura de uno a otro. La vista probablemente tendría que hacerse manualmente ya que Postgres no usa el mismo idioma para las vistas que SQL Server.

+0

Sí, pero eso requerirá mucho mantenimiento para mantenerse al día, preferiría algo que no me obligara a sumergirme en el código cada vez que cambie el esquema de la base de datos. y si lo hago genérico no es tan simple ya que ahora tengo que tomar decisiones basadas en tipos de datos, etc. – Fred

+0

Bueno, no creo que vaya a ser una ruta fácil. Vea aquí http://wiki.postgresql.org/wiki/Microsoft_SQL_Server_to_PostgreSQL_Migration_by_Ian_Harding para algunos de los problemas involucrados. Es mucho más probable que pueda codificar algo que funcione en su situación que alguien pueda crear una herramienta que funcione para todos. –

4

Puede usar la funcionalidad MS DTS (renombrada a SSIS en la última versión, creo). Un problema con el DTS es que no he podido hacer una confirmación después de cada fila al cargar los datos en la página. Lo cual está bien si solo tienes un par de 100k filas más o menos, pero es realmente muy lento.

Normalmente termino escribiendo un pequeño script que vacía los datos de SQLServer en formato CSV, y luego uso COPY WITH CSV en el lado de PostgreSQL.

Ambos solo se ocupan de los datos. Cuidar el esquema es un poco más difícil, ya que los tipos de datos no necesariamente se asignan directamente. Pero puede escribirse fácilmente junto con una carga estática del esquema. Si el esquema es simple (solo tipos de datos varchar/int, por ejemplo), esa parte también se puede crear fácilmente con los datos en INFORMATION_SCHEMA.

Cuestiones relacionadas