Access
 sql >> база данни >  >> RDS >> Access

Търсене в базата данни на Microsoft SQL Server за съхранени данни

Търсете в базата данни на Microsoft SQL Server за съхранени данни

Случвало ли ви се е да дешифрирате база данни и да идентифицирате в коя колона има данните, от които се нуждаете?

Наскоро ми се наложи да работя с извличането на данни от SQL база данни за използване в Microsoft Access и Power BI, за съжаление структурата на именуването на базата данни не беше много интуитивна.

Единственото ръководство, което имах, беше отчет, показващ пример за данните, които трябваше да бъдат извлечени, с етикети, които нямаха препратка към имената на колоните. Това може да означава часове работа за търсене в базата данни и преглед на всяка таблица, тази конкретна база данни имаше 288 таблици.

В миналото съм използвал код за търсене на колона в таблици, но в този случай това няма да ми помогне.

За щастие попаднах на много интересна статия https://stackoverflow.com/questions/15757263/find-a-string-by-searching-all-tables-in-sql-server-management-studio-2008, това беше перфектно за моите нужди. Просто трябваше да задам променливата с текста, който търсех, и да изпълня кода. За секунди получих списък с таблиците и колоните, където се появи текстът. Не след дълго имах списък с таблиците и колоните, които трябваше да включа в проекта си.

Моля, имайте предвид, че това решение се отнася само за таблици на SQL Server и се изпълнява в SQL Server Management Studio. Също така трябва да имате екземпляр на SQL Server, който поддържа променливи на таблица.

ИЗПОЛЗВАТЕ DATABASE_NAMEDECLARE @SearchStr nvarchar(100) ='SEARCH_TEXT'DECLARE @Results TABLE (ColumnName nvarchar(370), ColumnValue nvarchar(3630))SET NOCOUNT ONDECLARE @TableColunName(@TableColunName), @TableColunName SearchStr2 nvarchar(110)SET @TableName =''SET @SearchStr2 =QUOTENAME('%' + @SearchStr + '%','''') ДОКАТО @TableName НЕ Е NULLBEGIN SET @ColumnName ='' SET @TableName =( ИЗБЕРЕТЕ MIN(QUOTENAME(TABLE_SCHEMA) + '.' + QUOTENAME(TABLE_NAME)) ОТ INFORMATION_SCHEMA.TABLES, КЪДЕТО TABLE_TYPE ='ОСНОВНА ТАБЛИЦА' И QUOTENAME(TABLE_SCHEMA) + '.' + '.' QUOTENAME(TABLE_SCHEMA) + '.' + QUOTENAME(TABLE_NAME) ), 'IsMSShipped' ) =0 ) ДОКАТО (@Име на таблицата НЕ Е NULL) И (@Име на колона НЕ Е NULL) BEGIN SET =(ИЗБИРАНЕ НА ИМЕ на колона N(QUOTENAME(COLUMN_NAME)) ОТ INFORMATION_SCHEMA.COLUMNS, КЪДЕ TABLE_SCHEMA =PARSENAME(@TableName, 2) И TABLE_NAME =PARSENAME(@TableName, 1) И DATA_TYPE IN ('char', 'nvarchar', 'nvarchar', , 'int', 'decimal') И QUOTENAME(COLUMN_NAME)> @ColumnName ) АКО @ColumnName НЕ Е NULL ЗАПОЧНЕТЕ INSERT INTO @Results EXEC ('SELECT ''' + @TableName + '.' + @ColumnName + ''' , LEFT(' + @ColumnName + ', 3630) ОТ ' + @TableName + ' (NOLOCK) ' + ' WHERE ' + @ColumnName + ' LIKE ' + @SearchStr2 ) КРАЙ КРАЙ ENDSELECT ColumnName, FROM @Resulue> 

Надявам се и това да ви помогне!


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. 10 необичайни съвета за Microsoft Access 2019

  2. ПРЕДУПРЕЖДЕНИЕ:Версия на Office 2204 може да счупи приложенията за достъп

  3. MS Access:предимства и недостатъци

  4. Как да свържете таблица към бекенд база данни в Access 2016

  5. Как да запазите база данни като шаблон в Access 2016