Es allí una manera de analizador de consultas SQL para sacar los nombres de las columnas y los nombres de tabla?

StackOverflow https://stackoverflow.com/questions/56677

  •  09-06-2019
  •  | 
  •  

Pregunta

Tengo 150+ consultas SQL en distintos archivos de texto que necesito para analizar el actual código SQL, no los resultados de datos) con el fin de identificar todos los nombres de columna y tabla de nombres que se usan.De preferencia con el número de veces que cada columna de la tabla y hace una aparición.La escritura de un nuevo SQL de análisis de programa es más difícil de lo que parece, con instrucciones SELECT anidadas y similares.

Tiene que ser un programa o código por ahí que hace esto (o algo cercano a ello), pero yo no la he encontrado.

¿Fue útil?

Solución

De hecho, me terminé usando una herramienta llamada SQL Bastante Impresora.Usted puede comprar una versión de escritorio, pero acabo de utilizar la aplicación gratuita en línea.Sólo tienes que copiar la consulta en el cuadro de texto, configurar la Salida a la "Lista de DB Objeto" y haga clic en el Formato SQL botón.

Es un gran trabajo el uso de alrededor de 150 diferentes (y complejo) consultas SQL.

Otros consejos

Cómo sobre el uso del Plan de Ejecución de informes en MS SQLServer?Se pueden guardar en un archivo xml, el cual puede luego ser analizados.

Puede que desee mirar a algo como esto:

JSqlParser

que utiliza JavaCC para analizar y devolver la cadena de consulta como un objeto gráfico.Nunca lo he utilizado, así que no puedo dar fe de su calidad.

Si eres de las necesidades de la aplicación para hacerlo, y tiene acceso a una base de datos que tiene las tablas etc, podría ejecutar algo como:

SELECT TOP 0 * FROM MY_TABLE

El uso de ADO.NET.Esto le daría una instancia de DataTable para lo cual puede consultar las columnas y sus atributos.

Por favor, vaya con antlr...Escribir una gramática n seguir los pasos..que se da en antlr sitio..finalmente obtendrá AST(árbol de sintaxis abstracta).Para la consulta...podemos recorrer a través de esto y traer a toda la tabla ,columna, que está presente en la consulta..

En DB2 puede anexar a su consulta con algo como la siguiente, pero 1 es el mínimo que puede especificar;se producirá un error si se intenta especificar 0:

FETCH FIRST 1 ROW ONLY

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top