Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

320
Visualizações
Transferencia de metadatos de tabla de sqlserver a postgresql usando SQLAlchemy

Estoy tratando de migrar mi base de datos del servidor ms sql a PostgreSQL usando el script python. Antes de migrar los datos, el script debe crear las tablas requeridas.

Tengo la intención de usar sqlalchemy para crear las tablas requeridas y luego migrar los datos reales. A continuación se muestra el código de ejemplo. Al crear una tabla en pgsql, el script falla porque no hay un tipo de datos como tinyint en pgsql. Pensé que sqlalchemy abstrae estos tipos de datos.

Cualquier sugerencia y mejores prácticas para este tipo de casos de uso serán de gran ayuda.

 from sqlalchemy import create_engine, MetaData, select, func, Table import pandas as pd engine_pg = create_engine('postgresql://XXXX:YYYY$@10.10.1.4:5432/pgschema') engine_ms = create_engine('mssql+pyodbc://XX:YY@10.10.1.5/msqlschema?driver=SQL+Server') ms_metadata = MetaData(bind=engine_ms) pg_metadata = MetaData(bind=engine_pg) #extract Node table object from mssql using ms_metadat and engine_ms Node = Table('Node', ms_metadata, autoload_with=engine_ms) #create Node table in pgsql using the Node table object Node.create(bind=engine_pg)
over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

Si bien no he realizado la ruta de ms sql a postgreSQL, he realizado otras migraciones (pequeñas a pequeñas) y tengo una experiencia menor con las dos bases de datos que está viendo. La solución a su problema específico probablemente se haga mejor a través de una funcionalidad de mapeo. Hay una biblioteca que he mirado pero que nunca he usado y que contiene tales asignaciones: https://pgloader.readthedocs.io/en/latest/ref/mssql.html?highlight=tinyint%20#default-ms- reglas de conversión de sql

Dado que una migración de datos generalmente se realiza solo una vez, recomendaría utilizar una herramienta existente. SQLAlchemy no es realmente una herramienta de este tipo, según tengo entendido, pero podría convertirse en una con algo de esfuerzo.

Con respecto a su pregunta sobre SQLAlchemy que abstrae los datos, no mantendría esta situación en contra de SQLAlchemy. Tinyint es un tipo de datos de 1 byte. No hay tal tipo de datos disponible en postgreSQL, lo que hace imposible un mapeo directo. De ahí el mapeo en pgloader (vinculado arriba). https://docs.microsoft.com/en-us/sql/t-sql/data-types/int-bigint-smallint-and-tinyint-transact-sql?view=sql-server-ver15

https://www.postgresql.org/docs/9.1/datatype-numeric.html

Finalmente, algunos pensamientos sobre la metainformación disponible aquí. Parece que está ofreciendo una recompensa por estos 6 meses después de publicar la pregunta original, lo cual es interesante ya que es un proyecto enorme o uno al que no le asigna mucho tiempo. De cualquier manera, le insto a que use una herramienta existente en lugar de tratar de hacer que algo funcione más allá de su uso previsto. Otra cosa es la inclusión de la importación de pandas. Si está pensando en usar pandas para la transferencia de datos, quiero advertirle sobre el hecho de que pandas es muy indulgente con los formatos de datos. Es posible que esto no sea un problema para usted, pero una canalización de datos más controlada probablemente sería menos propensa a errores.

Dado el párrafo anterior, me gustaría obtener más información sobre la situación general antes de indicarle la dirección correcta. La migración de la base de datos también puede tener otras consecuencias imprevistas, por lo que no quiero dar la impresión de que la solución a su problema general es una solución rápida tan simple como un mapeo de minúsculo a minúsculo.

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda