es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo codifica pgadmin la ruta del archivo en las copias de seguridad?

Estoy intentando restaurar archivos de volcado desde ubicaciones que contienen caracteres de otros idiomas además del inglés.

Así es lo que hice:

Desde dentro de pgadmin, utilicé la herramienta de copia de seguridad de la siguiente manera:

enter image description here

Y dentro del campo de entrada “Nombre de archivo” proporcioné una carpeta real llamada “א”:

C:\א\toc.dump

enter image description here

El argumento real del archivo (-f archivo) se ha descodificado automáticamente como:

pg_dump.exe --file "C:\\0F04~1\\TOC~1.DUM"

Mi pregunta es: ¿qué sistema de decodificación utiliza pgadmin para descodificar el argumento de la ruta del archivo?

¿Cómo se obtiene “0F04~1” a partir de “א”?

Lo pregunto porque pg_restore no admite rutas de archivo que contengan caracteres no ingleses (desde la línea de comandos):

pg_dump.exe --file "C:\\0F04~1\\TOC1.DUMP" .... FUNCIONA BIEN

pg_dump.exe --file "C:\\א\\TOC1.DUMP" ... No funciona

pg_restore: [archivador personalizado] no se pudo abrir el archivo de entrada “…”

Como se indica en esta pregunta [link], si encuentro el sistema de codificación utilizado por pgadmin, lo utilizaré en mi código.

Mi objetivo es codificar la ruta que contiene caracteres no ingleses desde un lote de código para que funcione.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    El sistema de decodificación utilizado por pgadmin para decodificar los argumentos de la ruta de archivo se llama nombres de archivo cortos. Los nombres de archivo cortos son una característica heredada de Windows, que permite representar nombres de archivos que contienen caracteres no ingleses en un formato corto de 8.3 que es compatible con programas antiguos.

    En el ejemplo proporcionado, 0F04~1 es el nombre de archivo corto generado por Windows para la carpeta llamada א. Windows genera nombres de archivo cortos utilizando una función hash para crear un nombre único de 8 caracteres que es compatible con programas heredados.

    Para codificar las rutas de archivo que contienen caracteres no ingleses desde el código de lotes, puede utilizar el comando dir /x para mostrar los nombres de archivo cortos de cada carpeta y archivo, y luego utilizar los nombres de archivo cortos en sus comandos. Por ejemplo:

    dir /x C:\ | find "א"
    

    Este comando mostrará el nombre de archivo corto de la carpeta llamada א, que luego puede utilizar en su comando pg_restore:

    pg_restore -d dbname -Fc "C:\0F04~1\TOC1.DUMP"
    

Comments are closed.