#sql #sql-server #powershell #search #command
#sql #sql-server #powershell #Поиск #команда
Вопрос:
У меня большая база данных со многими таблицами. Теперь я хотел бы выполнить поиск по всем таблицам и перечислить те таблицы, которые содержат столбец с именем «column_name». Я наткнулся на SQL Server Powershell и задаюсь вопросом, можно ли его использовать для поиска столбцов? Если да, можете ли вы привести пример?
Комментарии:
1. Посмотрите на объекты
sys.tables
andsys.columns
илиINFORMATION_SCHEMA.COLUMNS
объект. Существует множество примеров того, как узнать, какие столбцы есть в таблицах.
Ответ №1:
В дополнение к ответам с помощью запроса, ниже приведен общий пример выполнения любого SELECT
запроса в PowerShell и отображения выходных данных в таблице.
# execute select query and display output in grid
$connectionString = "Data Source=.;Initial Catalog=AdventureWorks2012;Integrated Security=SSPI"
$query = @"
SELECT s.name AS SchemaName,
t.name AS TableName
FROM sys.schemas s
JOIN sys.tables t ON s.schema_id = t.schema_id
JOIN sys.columns c ON t.object_id = c.object_id
WHERE c.name = N'column_name';
"@
$command = New-object System.Data.SqlClient.SqlCommand($query, $connectionString)
$dataTable = New-Object System.Data.DataTable
$dataAdapter = New-Object System.Data.SqlClient.SqlDataAdapter($command)
$dataAdapter.Fill($dataTable)
$dataTable | Out-GridView
Ответ №2:
Просто используйте системные объекты:
SELECT s.[name] AS SchemaName,
t.[name] AS TableName
FROM sys.schemas s
JOIN sys.tables t ON s.schema_id = t.schema_id
JOIN sys.columns c ON t.object_id = c.object_id
WHERE c.[name] = N'column_name';
Ответ №3:
Я бы рекомендовал INFORMATION_SCHEMA
представление:
select table_name, column_name
from information_schema.columns
where c.column_name = ?;
Эти представления фактически стандартизированы и доступны во многих базах данных.