git - hacer - exportar base sql a excel
Cómo realizar un mejor control de la versión del documento en archivos de Excel y en archivos de esquema SQL (9)
Estoy a cargo de varios archivos de Excel y de esquema de SQL. ¿Cómo debo realizar un mejor control de la versión del documento en estos archivos? Necesito saber la parte modificada (parte diferente) en estos archivos y mantener todas las versiones para referencia. Actualmente agrego la marca de tiempo en el nombre del archivo, pero encontré que parecía ser ineficiente.
¿Hay alguna forma o buena práctica de mejorar el control de la versión del documento?
Por cierto, los editores me envían los archivos por correo electrónico.
Como se menciona en el comentario de otra respuesta, los archivos .xlsx son solo XML.
Para llegar al directorio XML (que es git
-able), debe "descomprimir" el archivo .xlsx en un directorio. Una manera rápida de ver esto en Windows es cambiar el nombre del archivo .xlsx a .zip, y verá los contenidos internos. Guardaría esto junto con el binario para que cuando finalice la compra, no tenga que hacer otros pasos para abrir el documento en Excel.
Esta utilidad de Excel funciona muy bien para mí:
Control de versiones para Excel
Es una herramienta de control de versiones bastante sencilla para libros de trabajo y macros de VBA. Una vez que compromete una versión, se guarda en el repositorio de Git en su PC. Nunca lo intenté re. Archivos de esquema SQL, pero estoy seguro de que hay una forma de evitarlo.
He estado luchando con este problema exacto en los últimos días y he escrito una pequeña utilidad .NET para extraer y normalizar archivos de Excel de forma que sean mucho más fáciles de almacenar en el control de código fuente. He publicado el ejecutable aquí:
https://bitbucket.org/htilabs/ooxmlunpack/downloads/OoXmlUnpack.exe
..y la fuente aquí:
https://bitbucket.org/htilabs/ooxmlunpack
Si hay algún interés, me complace hacer que esto sea más configurable, pero por el momento, debes poner el ejecutable en una carpeta (por ejemplo, la raíz de tu repositorio de origen) y cuando lo ejecutes:
- Escanee la carpeta y sus subcarpetas para cualquier archivo .xlsx y .xlsm
- Tome una copia del archivo como * .orig
- Descomprime cada archivo y vuelve a comprimirlo sin compresión
- Imprime bastante bien cualquier archivo en el archivo que sea XML válido
- Elimine el archivo calcchain.xml del archivo (ya que cambia mucho y no afecta el contenido del archivo)
- Inline cualquier valor de texto no formateado (de lo contrario, estos se guardan en una tabla de búsqueda que causa grandes cambios en el XML interno si se modifica una sola celda)
- Elimine los valores de las celdas que contengan fórmulas (ya que solo pueden calcularse cuando se abra la hoja)
- Cree una subcarpeta * .extracted, que contenga el contenido del archivo zip extraído
Claramente, no todas estas cosas son necesarias, pero el resultado final es un archivo de hoja de cálculo que aún se abrirá en Excel, pero que es mucho más susceptible de compresión diferencial e incremental. Además, el almacenamiento de los archivos extraídos también hace que sea mucho más obvio en el historial de versiones qué cambios se han aplicado en cada versión.
Si hay algún apetito, me complace hacer que la herramienta sea más configurable, ya que supongo que no todos querrán que se extraigan los contenidos, o posiblemente los valores eliminados de las celdas de fórmula, pero estos son muy útiles para mí en este momento.
En las pruebas, una hoja de cálculo de 2MB ''desempaqueta'' a 21MB pero luego pude almacenar cinco versiones con pequeños cambios entre cada una, en un archivo de datos mercurial de 1.9MB, y visualizar las diferencias entre versiones usando Beyond Compare en modo texto.
aunque estoy usando Mercurial, leí esta pregunta mientras investigaba mi solución y no hay nada mercurial-específico sobre la solución, debería funcionar bien para git o cualquier otro vcs
Hemos creado una extensión de línea de comando Git de código abierto para libros de trabajo de Excel: https://www.xltrail.com/git-xltrail .
En pocas palabras, la característica principal es que hace que git diff
funcione en cualquier formato de archivo de libro para que muestre la diferencia en el contenido de VBA del libro de trabajo (en algún punto, haremos que esto funcione también para el contenido de las hojas de cálculo).
Todavía es temprano pero podría ayudar.
La respuesta que he escrito here se puede aplicar en este caso. Una herramienta llamada xls2txt puede proporcionar resultados legibles por humanos a partir de archivos xls. En resumen, debe poner esto en su archivo .gitattributes:
*.xls diff=xls
Y en .git / config:
[diff "xls"]
binary = true
textconv = /path/to/xls2txt
Por supuesto, estoy seguro de que también puede encontrar herramientas similares para otros tipos de archivos, por lo que git diff
una herramienta muy útil para documentos de oficina. Esto es lo que tengo actualmente en mi .gitconfig global:
[diff "xls"]
binary = true
textconv = /usr/bin/py_xls2txt
[diff "pdf"]
binary = true
textconv = /usr/bin/pdf2txt
[diff "doc"]
binary = true
textconv = /usr/bin/catdoc
[diff "docx"]
binary = true
textconv = /usr/bin/docx2txt
El libro de Pro Git tiene un buen capítulo sobre el tema: http://git-scm.com/book/en/Customizing-Git-Git-Attributes#Binary-Files
Mi enfoque con los archivos de Excel es similar al de Jon, pero en lugar de trabajar con los datos brutos de texto de Excel, los exporto a formatos más amigables.
Aquí está la herramienta que uso: https://github.com/stenci/ExcelToGit/tree/master
Todo lo que necesita es descargar el archivo .xlsm (haga clic en el enlace Ver sin procesar en esta página ). No se olvide de verificar la configuración de Excel como se describe en el archivo Léame. También puede agregar el código para exportar datos SQL a archivos de texto.
El libro de trabajo es tanto un convertidor de Excel binario a archivos de texto y un iniciador de las herramientas de Windows Git, y se puede utilizar también con proyectos no relacionados con Excel.
Mi versión de trabajo está configurada con docenas de libros de Excel. Utilizo el archivo también para abrir Git-gui para proyectos que no son de Excel, simplemente agregando la carpeta git a mano.
Tante lo hizo muy simple en la gestión de formatos de archivo ZIP en git :
Abra su archivo ~ / .gitconfig (cree si no existe ya) y agregue la siguiente estrofa:
[diff "zip"]
textconv = unzip -c -a
Utilice la extensión de documento abierto .fods
, es un marcado xml sin comprimir que Excel y libreoffice pueden abrir, y los diffs se verán bien.
Como has etiquetado tu pregunta con git , supongo que estás preguntando sobre el uso de git
para esto.
Bueno, los volcados de SQL son archivos de texto normales, por lo que tiene mucho sentido rastrearlos con git
. Simplemente crea un repositorio y guárdalo en él. Cuando obtengas una nueva versión de un archivo, simplemente sobreescríbalo y confirma, git
lo encontrará todo por ti, y podrás ver las fechas de modificación, consultar versiones específicas de este archivo y comparar diferentes versiones.
Lo mismo es cierto para .xlsx
si los descomprimes. .xlsx
archivos .xlsx
tienen directorios comprimidos de archivos XML (consulte ¿Cómo ensamblar correctamente un archivo xlsx válido desde sus subcomponentes internos? ). Git los verá como binarios a menos que se descompriman. Es posible descomprimir el .xlsx
y rastrear los cambios en los archivos XML individuales dentro del archivo.
También podría hacer esto con archivos .xls
, pero el problema aquí es que el formato .xls
es binario, por lo que no puede obtener diferencias significativas de él. Pero aún podrá ver el historial de modificaciones y las versiones específicas de pago y envío.