sql - soporta - title html español
Herramienta de diferencia que ignora las líneas nuevas (12)
¿Has probado KDiff ? Estoy seguro de que puede ignorar los espacios en blanco con él, y si no es lo suficientemente potente para usted, le permite ejecutar un preprocesador sobre el archivo. Lo mejor de todo es que es gratis y de código abierto.
Con frecuencia necesito comparar los procedimientos de SQL para determinar qué ha cambiado en la versión más reciente. El problema es que cada uno tiene su propio estilo de formato, y a SQL no le importa (por lo general) dónde colocan sus nuevas líneas (por ejemplo, dónde están todas las cláusulas en una línea frente a una nueva línea antes de cada AND).
Esto hace que sea muy difícil (especialmente para procedimientos largos) ver las diferencias reales. Parece que no puedo encontrar una utilidad gratuita de diferencias / fusiones que me permita ignorar las nuevas líneas (es decir, tratarlas como espacios en blanco). Hasta ahora he intentado WinMerge y Beyond Compare sin suerte. ¿Alguien sabe de una herramienta de diferencias (idealmente gratuita) que vea estos dos ejemplos como idénticos?
Ex. 1:
the quick
brown
Ex. 2:
the
quick
brown
Gracias por adelantado.
El comando "ignorar espacios en blanco: todo" de la herramienta diff de PHPStorm lo hace perfectamente como usted desea. Y tiene soporte integrado para muchos VCS como SVN, git, etc. ¡Además de soporte integrado de SQL!
No es gratis pero el tiempo tampoco es gratis. ¿Quieres perder el tiempo haciéndolo de la manera más difícil? Adelante.
¡Todavía no puedo creer que sea 2014 y esta no era una característica estándar de todas las herramientas de diferencias!
Por cierto, creo que la herramienta de diferencia de WebStorm también funcionaría.
Independientemente de su definición de "Libre" (beer vs speech / libre), architectshack.com/PoorMansTSqlFormatter.ashx#Download_8 también está disponible para hacer esto, ya sea con WinMerge (usando el complemento Winmerge) o Beyond Compare y otras herramientas de comparación que permiten el comando Preformateado de línea, utilizando el formateador masivo de línea de comandos.
Si prefiere tomarlo por un momento sin descargar nada, está disponible para uso inmediato en línea (como sus homólogos no libres T-SQL Tidy, Instant SQL Formatter, etc.):
Lo que he hecho en mi propio caso similar es usar un prettifier sql que organizará dos conjuntos de SQL semi-dispares de manera muy similar automáticamente. Luego pego y comparo los resultados con WinMerge.
Es un proceso de dos pasos, pero es mucho más aceptable que muchas otras opciones, especialmente cuando están involucradas muchas líneas de código.
Enlace a la impresora Sql Pretty basada en la web que es decente.
Me encanta la fusión de Araxis. No es gratis pero vale la pena. Puede, entre otras cosas, ignorar cualquier tipo de espacio en blanco si lo desea.
Nuestro SD Smart Differencer compara dos programas de origen según su sintaxis y estructura gramatical precisa, en lugar de según el texto sin formato. Lo hace analizando la fuente (SQL) como lo haría un compilador, y comparando las estructuras de datos del compilador correspondientes (por ejemplo, árboles de sintaxis abstracta). Por lo tanto, a la SmartDifference no le interesan las nuevas líneas, los espacios en blanco ni los comentarios intermedios.
Informa las diferencias, no en términos de saltos de línea, sino más bien en términos de estructuras de lenguaje de programación (variables, expresiones, declaraciones, bloques, funciones, ...) y en términos cercanos a las intenciones del programador (eliminar, insertar, mover, copiar, renombrar) en lugar de insertar líneas o eliminar líneas.
SQL (como muchos otros nombres de lenguaje de computadora) es el nombre de una familia de lenguajes de computadora que son similares en sintaxis pero difieren en detalle. Entonces, para el Smart Differencer, qué dialecto de SQL está usando. Tenemos front-end SQL (por lo tanto SmartDifferncers) para PLSQL y SQL2011. En la medida en que el SQL se mantenga dentro de los límites de cualquiera de estos, Smart Differencer puede trabajar para usted; En la medida en que use extras de SQL Server o Postgres, el SmartDifferencer actualmente no puede ayudarlo. [Desarrollamos analizadores de idiomas como parte de nuestro negocio, así que espero que esto sea una cuestión de retraso en lugar de nunca].
Mientras que el OP preguntó acerca de SQL en los detalles, su pregunta de titular es independiente del lenguaje. También hay SmartDifferencers para muchos otros lenguajes ampliamente utilizados además de SQL: C, C ++, C #, Java, ...
Otra alternativa es Ediff de Emacs. Funciona muy bien si no tienes miedo de Emacs.
Puede utilizar el DTP (proyecto de herramienta de datos) del IDE de Eclipse.
Para mostrarlo, creé dos archivos SQL casi idénticos y dejé que eclipse me mostrara las diferencias. Después de hacer clic en "mostrar el siguiente" tomé una captura de pantalla.
Como puede ver, aún destaca las nuevas líneas, pero por la forma en que lo hace, puede ver inmediatamente que no contienen cambios sustanciales en el SQL. Es fácil detectar dónde cambié la identificación de 1 a 2.
Aquí está el resultado.
Puede utilizar la herramienta de línea de comandos wdiff para ignorar las nuevas líneas. wdiff
es una herramienta de GNU para comparar archivos palabra por palabra. Puede ignorar las nuevas líneas con la opción -n
.
Supongamos que coloco sus 2 archivos de ejemplo en ex1.txt y ex2.txt. Entonces podemos correr:
$> wdiff -n ex1.txt ex2.txt
the
quick
brown
La salida es en realidad el contenido del primer archivo. Tenga en cuenta que no hay signos + o -, lo que significa que los archivos tienen las mismas cadenas.
Si hubiera agregado "fox" al final de ex1.txt, la salida se vería así:
the
quick
brown [-fox-]
Si todavía le molesta ver las palabras comunes, puede agregar -3
o --no-common
. Aquí está el ejemplo otra vez donde agregué "fox" al primer archivo:
$> wdiff -n -3 /tmp/ex1.txt /tmp/ex2.txt
======================================================================
[-fox-]
======================================================================
Realmente me gusta DiffMerge de SourceGear !
Funciona en todas las plataformas y ha incorporado reglas, pero le permite crear y agregar las suyas propias. Lo que significa que puede ignorar lo que quiera, cuando lo desee.
Bonus, es gratis!
Si estás en Windows, WinMerge es bastante elegante. Bajo Linux (y quizás OS X), está Meld .
Ambos son gratis como en cerveza y funcionan bastante bien. No es tan genial como Araxis, pero entonces no queremos que estés babeando en tu escritorio.
Ambas son herramientas de uso múltiple con características tales como ignorar espacios en blanco. No estoy absolutamente seguro de que ignoren las líneas en blanco, pero es probable que puedan hacerlo.
Compare++ es una opción, puede probar "Ignorar cambios de estilo de código" en el menú ''inteligente''. Es compatible con la comparación estructurada para muchos lenguajes como C / C ++, JavaScript, C #, Java, ...