{"id":9852,"date":"2019-09-12T18:45:04","date_gmt":"2019-09-12T16:45:04","guid":{"rendered":"http:\/\/www.palentino.es\/blog\/?p=9852"},"modified":"2019-09-12T19:55:09","modified_gmt":"2019-09-12T17:55:09","slug":"parseo-de-cadenas-en-sql-server-utilidades-externas","status":"publish","type":"post","link":"https:\/\/www.palentino.es\/blog\/parseo-de-cadenas-en-sql-server-utilidades-externas\/","title":{"rendered":"Parseo de Cadenas en SQL Server y utilidades externas. #parser"},"content":{"rendered":"<p>El trabajo con el gestor relacional de <strong>SQL Server<\/strong> puede ser efectuado desde diversos productos. El m\u00e1s conocido es el propio desarrollado por Microsoft denominado <a href=\"https:\/\/docs.microsoft.com\/es-es\/sql\/ssms\/download-sql-server-management-studio-ssms?view=sql-server-2017\" target=\"_blank\" rel=\"noopener noreferrer\">SQL Server Management Studio<\/a>.<\/p>\n<p>Os he compartido en este post una <strong>utilidad para desarrolladores<\/strong> en VB.NET que posibilita maquetar cadenas r\u00e1pidamente para realizar determinadas operaciones con nuestras consultas <a href=\"https:\/\/es.m.wikipedia.org\/wiki\/Lenguaje_de_manipulaci%C3%B3n_de_datos\" target=\"_blank\" rel=\"noopener noreferrer\">DML<\/a> sobre SQL Server empleando Visual Studio.<\/p>\n<p>La <strong>maquetaci\u00f3n<\/strong> de cadenas tiene como objetivo <strong>minimizar los errores en la programaci\u00f3n y simplificar el c\u00f3digo<\/strong>, siguiendo un principio program\u00e1tico <a href=\"https:\/\/es.wikipedia.org\/wiki\/Principio_KISS\" target=\"_blank\" rel=\"noopener noreferrer\"><strong>KISS<\/strong><\/a>.<\/p>\n<p>La herramienta posibilita crear, por ejemplo, un n\u00famero determinado de campos template para realizar <strong>INSERTs, UPDATEs o DELETEs <\/strong>a modo de ayuda (recordatorio o <i>must&#8217;ve<\/i>)<strong>.<\/strong><\/p>\n<p>Posee otras consultas a modo de ejemplo y ayuda para recordar la sintaxis cuando la teng\u00e1is que emplear en vuestros trabajos.<\/p>\n<p>Todo ello se llevar\u00e1 al portapapeles para poder ser pegado en los proyectos VB.NET o C# del <strong>IDE<\/strong> de Visual Studio.<\/p>\n<p><!--more--><\/p>\n<p><strong>Os dejar\u00e9, al menos, algunos principios que a m\u00ed me funcionan, respecto al parseo o maquetaci\u00f3n de cadenas de consulta SQL sobre cualquier <a href=\"https:\/\/en.wikipedia.org\/wiki\/Relational_database#RDBMS\" target=\"_blank\" rel=\"noopener noreferrer\">RDBMs<\/a>.<\/strong><\/p>\n<ul>\n<li>Procura que <strong>no queden todas en una misma l\u00ednea <\/strong>(los famosos churros), esto generar\u00e1 muchos errores y su lectura para otros desarrolladores puede ser mucho mas complicada. La mayor\u00eda no son culpa del programador, muchas veces son producto de falta de tiempo en los desarrollos, esto l\u00f3gicamente repercute en la calidad del c\u00f3digo.<\/li>\n<li>Intenta estructurar en varias l\u00edneas <strong>sentencias similares<\/strong>, con separadores o saltos de l\u00ednea.<\/li>\n<li>Utiliza <strong>may\u00fasculas<\/strong> para las cl\u00e1usulas del lenguaje SQL (T-SQL) y min\u00fasculas para nombres de campos, tablas, variables. Sql no es case sensitive pero con el tiempo lo agradeceremos.<\/li>\n<li>Procura terminar todas las cadenas con \u201c;\u201d, recuerda que podr\u00e1s anidarlas en caso de necesidad en entornos transaccionales o para procesos por lotes.<\/li>\n<li>Emplea para las variables y tablas alguna notaci\u00f3n com\u00fan para el equipo de trabajo, por ejemplo, la <a href=\"https:\/\/es.wikipedia.org\/wiki\/Notaci%C3%B3n_h%C3%BAngara\" target=\"_blank\" rel=\"noopener noreferrer\">Notaci\u00f3n h\u00fangara<\/a>.<\/li>\n<li>Cuanto m\u00e1s tiempo dediquemos al parseo, menos probabilidad de errores de c\u00f3digo, mayor calidad . El 80% de los fallos de un software es generado por un 20% del c\u00f3digo de dicho software (<a href=\"https:\/\/es.wikipedia.org\/wiki\/Principio_de_Pareto\" target=\"_blank\" rel=\"noopener noreferrer\">pareto aplicado al software<\/a>).<\/li>\n<\/ul>\n<p>Este \u00e1mbito del parsing de cadenas SQL <strong>no es algo reciente<\/strong>. Existen diversas <strong>t\u00e9cnicas y herramientas<\/strong> disponibles para esta funci\u00f3n. El propio <strong>SSMS<\/strong> dispone de un generador de consultas bellas, generador autom\u00e1tico para el <a href=\"https:\/\/es.wikipedia.org\/wiki\/B%C3%BAsqueda_mediante_ejemplo\" target=\"_blank\" rel=\"noopener noreferrer\">QBE<\/a> (visual) tambi\u00e9n existen diversas herramientas a modo de plugin para el cliente de SQL Server (SMSS).<\/p>\n<p>Os dejo unos enlaces a dichas utilidades de maquetaci\u00f3n, muchas de ellas gratuitas con posibilidad de adquirir las versiones avanzadas. Las funciones avanzadas van encaminadas a la <strong>optimizaci\u00f3n de consultas, velocidad, traza, estudio y desarrollo<\/strong>.<\/p>\n<p>Este software que os dejo es gratuito, lo he desarrollado como utilidad y acelerador, se encuentra comprimido en un <a href=\"https:\/\/www.winrar.es\/descargas\" target=\"_blank\" rel=\"noopener noreferrer\">rar<\/a>, es portable y ofrece importantes caracter\u00edsticas para gestionar nuestras bases de datos. No obstante, existen otro tipo de funcionalidades que pueden ser mejoradas o a\u00f1adidas con el tiempo.<\/p>\n<p>Una vez ejecutado el programa aparecer\u00e1 una ventana similar a esta.<\/p>\n<p>Muestra una pantalla donde se puede teclear c\u00f3digo y pulsando sobre preparar cadena, generara los saltos adecuados ya que posee un analizador <a href=\"http:\/\/www.palentino.es\/blog\/creacion-de-un-sencillo-analizador-lexico-caso-practico\/\" target=\"_blank\" rel=\"noopener noreferrer\">l\u00e9xico<\/a> dentro. Adem\u00e1s se pueden emplear aceleradores de SQL.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-9870\" src=\"http:\/\/www.palentino.es\/blog\/wp-content\/uploads\/2019\/09\/Parseador-v-2-1.5.jpg\" alt=\"\" width=\"658\" height=\"455\" srcset=\"https:\/\/www.palentino.es\/blog\/wp-content\/uploads\/2019\/09\/Parseador-v-2-1.5.jpg 658w, https:\/\/www.palentino.es\/blog\/wp-content\/uploads\/2019\/09\/Parseador-v-2-1.5-300x207.jpg 300w\" sizes=\"auto, (max-width: 658px) 100vw, 658px\" \/><\/p>\n<p>Utilidad (<strong>stored procedure<\/strong>) para realizar b\u00fasquedas en todo el sistema.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-9871\" src=\"http:\/\/www.palentino.es\/blog\/wp-content\/uploads\/2019\/09\/Parseador-v-3-1.5.jpg\" alt=\"\" width=\"658\" height=\"455\" srcset=\"https:\/\/www.palentino.es\/blog\/wp-content\/uploads\/2019\/09\/Parseador-v-3-1.5.jpg 658w, https:\/\/www.palentino.es\/blog\/wp-content\/uploads\/2019\/09\/Parseador-v-3-1.5-300x207.jpg 300w\" sizes=\"auto, (max-width: 658px) 100vw, 658px\" \/><\/p>\n<p>Generador de <strong>updates<\/strong> con los campos que desees para simplificar la programaci\u00f3n y minimizar errores.<\/p>\n<p><a href=\"http:\/\/www.palentino.es\/blog\/wp-content\/uploads\/2019\/09\/Parseador-v1.5.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-9869\" src=\"http:\/\/www.palentino.es\/blog\/wp-content\/uploads\/2019\/09\/Parseador-v1.5.jpg\" alt=\"\" width=\"658\" height=\"455\" srcset=\"https:\/\/www.palentino.es\/blog\/wp-content\/uploads\/2019\/09\/Parseador-v1.5.jpg 658w, https:\/\/www.palentino.es\/blog\/wp-content\/uploads\/2019\/09\/Parseador-v1.5-300x207.jpg 300w\" sizes=\"auto, (max-width: 658px) 100vw, 658px\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n<p>Mostrar enlace de descarga y <strong>Enlaces a plugins \/ herramientas de parseo.<\/strong><\/p>\n<p style=\"text-align: center;\">           \r\n            <div class=\"onp-locker-call\" style=\"display: none;\" data-lock-id=\"onpLock936913\">\r\n                <p><a href=\"http:\/\/www.palentino.es\/parseadorsql\/Sql-parser.rar\" target=\"_blank\" rel=\"noopener noreferrer\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-2874\" src=\"http:\/\/www.palentino.es\/blog\/wp-content\/uploads\/2012\/12\/Descarga.png\" alt=\"\" width=\"300\" height=\"100\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p><a href=\"https:\/\/www.apexsql.com\/sql-tools-refactor.aspx\" target=\"_blank\" rel=\"noopener noreferrer\">https:\/\/www.apexsql.com\/sql-tools-refactor.aspx<\/a><\/p>\n<p><a href=\"http:\/\/www.dpriver.com\/pp\/sqlformat.htm\" target=\"_blank\" rel=\"noopener noreferrer\">http:\/\/www.dpriver.com\/pp\/sqlformat.htm<\/a><\/p>\n<p><a href=\"https:\/\/www.ssmstoolspack.com\/Features?f=4\" target=\"_blank\" rel=\"noopener noreferrer\">https:\/\/www.ssmstoolspack.com\/Features?f=4<\/a><\/p>\n<p><a href=\"https:\/\/www.ssmsboost.com\/\" target=\"_blank\" rel=\"noopener noreferrer\">https:\/\/www.ssmsboost.com\/<\/a><\/p>\n<p><a href=\"https:\/\/www.devart.com\/dbforge\/sql\/\" target=\"_blank\" rel=\"noopener noreferrer\">https:\/\/www.devart.com\/dbforge\/sql\/<\/a><\/p>\n<p><a href=\"http:\/\/architectshack.com\/PoorMansTSqlFormatter.ashx#Download_15\" target=\"_blank\" rel=\"noopener noreferrer\">http:\/\/architectshack.com\/PoorMansTSqlFormatter.ashx#Download_15<\/a><\/p>\n<p><a href=\"http:\/\/www.sqlsmash.com\/\" target=\"_blank\" rel=\"noopener noreferrer\">http:\/\/www.sqlsmash.com\/<\/a><\/p>\n<p><span style=\"text-align: center;\"><\/p>\r\n            <\/div>\r\n         \r\n\r\n        <\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>El trabajo con el gestor relacional de SQL Server puede ser efectuado desde diversos productos. El m\u00e1s conocido es el propio desarrollado por Microsoft denominado SQL Server Management Studio. Os he compartido en este post una utilidad para desarrolladores en VB.NET que posibilita maquetar cadenas r\u00e1pidamente para realizar determinadas operaciones con nuestras consultas DML sobre SQL Server empleando Visual Studio. La maquetaci\u00f3n de cadenas tiene como objetivo minimizar los errores en la programaci\u00f3n y simplificar el c\u00f3digo, siguiendo un principio program\u00e1tico KISS. La herramienta posibilita crear, por ejemplo, un n\u00famero determinado de campos template para realizar INSERTs, UPDATEs o DELETEs a modo de ayuda (recordatorio o must&#8217;ve). Posee otras consultas a modo de ejemplo y ayuda para recordar la sintaxis cuando la teng\u00e1is que emplear en vuestros trabajos. Todo ello se llevar\u00e1 al portapapeles para poder ser pegado en los proyectos VB.NET o C# del IDE de Visual Studio.<\/p>\n","protected":false},"author":1,"featured_media":6893,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[295],"tags":[2187,568,496],"class_list":["post-9852","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-sql-2","tag-parseador","tag-sql-server","tag-utilidad"],"_links":{"self":[{"href":"https:\/\/www.palentino.es\/blog\/wp-json\/wp\/v2\/posts\/9852","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.palentino.es\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.palentino.es\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.palentino.es\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.palentino.es\/blog\/wp-json\/wp\/v2\/comments?post=9852"}],"version-history":[{"count":30,"href":"https:\/\/www.palentino.es\/blog\/wp-json\/wp\/v2\/posts\/9852\/revisions"}],"predecessor-version":[{"id":9893,"href":"https:\/\/www.palentino.es\/blog\/wp-json\/wp\/v2\/posts\/9852\/revisions\/9893"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.palentino.es\/blog\/wp-json\/wp\/v2\/media\/6893"}],"wp:attachment":[{"href":"https:\/\/www.palentino.es\/blog\/wp-json\/wp\/v2\/media?parent=9852"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.palentino.es\/blog\/wp-json\/wp\/v2\/categories?post=9852"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.palentino.es\/blog\/wp-json\/wp\/v2\/tags?post=9852"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}