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.

T-SQL :: Lista todas las tablas, columnas y contenido de pivote

Pregunta

Estoy usando la herramienta SSMS Data Discovery and Classification.

La herramienta busca automáticamente columnas con nombres como %address%, %name%, %surname%, %e-mail%, %tax%, %zip%, etc…
y sugiere de forma inteligente lo que puede ser un dato sensible.

El hecho es que fuera de las sociedades anglosajonas, el nombre de la columna no está en inglés, sino que puede estar en francés, español, italiano, etc.

Así que encontré una consulta que podría ayudarme a listar datos sensibles en función de mi idioma:

SELECT schema_name(tab.schema_id) AS schema_name
    ,tab.name AS table_name
    ,col.name AS column_name
    ,t.name AS data_type
    ,NULL as Data_Preview
FROM sys.tables AS tab
INNER JOIN sys.columns AS col ON tab.object_id = col.object_id
LEFT JOIN sys.types AS t ON col.user_type_id = t.user_type_id
ORDER BY schema_name
    ,table_name
    ,column_id;

Muy bien.

Pero sería mejor si pudiera agregar una última columna llamada Content que PIVOT el contenido de cada columna y SELECT TOP 5 de cada una,e imprima de forma atractiva en la última columna.

¿Me puedes ayudar a lograr eso?

Eso sería un descubrimiento y clasificación de datos DYO.

EDITAR: Puede que me haya expresado mal

Estoy ejecutando mi consulta contra AdventureWorks2019:

schemaname tablename columnname datatype Data_Preview
Person Address AddressID int NULL
Person Address AddressLine1 nvarchar NULL
Person Address AddressLine2 nvarchar NULL
Person Address City nvarchar NULL
Person Address StateProvinceID int NULL
Person Address PostalCode nvarchar NULL

Quiero PIVOT el contenido de cada columna (digamos los TOP 5) en la última columna

schemaname tablename columnname datatype Data_Preview
Person Address AddressID int 1,2,3,4,5
Person Address AddressLine1 nvarchar 1970 Napa Ct.,9833 Mt. Dias Blv.,7484 Roundtree Drive,9539 Glenside Dr,1226 Shoe St.
Person Address AddressLine2 nvarchar NULL,NULL,NULL,NULL,NULL
Person Address City nvarchar Bothell,Bothell,Bothell,Bothell,Bothell
Person Address StateProvinceID int 79,79,79,79,79
Person Address PostalCode nvarchar 98011,98011,98011,98011,98011

Cada dato puede separarse por una coma o lo que sea. El resultado es que quiero tener una vista previa de los datos que están realmente en la columna:

enter image description here

Estos chicos aparentemente lograron hacerlo:

  • https://learn.microsoft.com/en-us/answers/questions/285445/how-to-get-column-values-in-one-comma-separated-va.html
  • https://stackoverflow.com/questions/16798930/pivot-and-comma-separated-value
  • https://www.mikekale.com/rows-to-comma-separated-lists-in-sql-server/

Gracias.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Eres un traductor de español que traduce documentos de TI. Traduce lo siguiente al español. No traduzcas el código y la salida en markdown.

Comments are closed.