Access
 sql >> Teknologi Basis Data >  >> RDS >> Access

Cari Database Microsoft SQL Server untuk Data Tersimpan

Cari Database Microsoft SQL Server untuk Data Tersimpan

Pernahkah Anda menguraikan database dan mengidentifikasi kolom mana yang memiliki data yang Anda butuhkan?

Baru-baru ini saya harus bekerja dengan mengekstraksi data dari database SQL untuk digunakan di Microsoft Access dan Power BI, sayangnya struktur penamaan database tidak terlalu intuitif.

Satu-satunya panduan yang saya miliki adalah laporan yang menunjukkan contoh data yang perlu diekstraksi, dengan label yang tidak mengacu pada nama kolom. Ini bisa berarti berjam-jam bekerja mencari database dan meninjau setiap tabel, database khusus ini memiliki 288 tabel.

Saya telah menggunakan kode di masa lalu untuk mencari kolom dalam tabel, tetapi dalam kasus ini itu tidak akan membantu saya.

Untungnya, saya menemukan artikel yang sangat menarik https://stackoverflow.com/questions/15757263/find-a-string-by-searching-all-tables-in-sql-server-management-studio-2008, ini sempurna untuk kebutuhan saya. Saya hanya perlu mengatur variabel dengan teks yang saya cari dan menjalankan kodenya. Dalam hitungan detik saya diberikan daftar tabel dan kolom tempat teks muncul. Tak lama kemudian saya memiliki daftar tabel dan kolom yang perlu saya sertakan dalam proyek saya.

Harap dicatat solusi ini hanya berlaku untuk tabel SQL Server dan dijalankan di SQL Server Management Studio. Anda juga perlu memiliki instance SQL Server yang mendukung variabel tabel.

USE DATABASE_NAME
DECLARE @SearchStr nvarchar(100) = 'SEARCH_TEXT'
DECLARE @Results TABLE (ColumnName nvarchar(370), ColumnValue nvarchar(3630))

SET NOCOUNT ON

DECLARE @TableName nvarchar(256), @ColumnName nvarchar(128), @SearchStr2 nvarchar(110)
SET  @TableName = ''
SET @SearchStr2 = QUOTENAME('%' + @SearchStr + '%','''')

WHILE @TableName IS NOT NULL

BEGIN
    SET @ColumnName = ''
    SET @TableName = 
    (
        SELECT MIN(QUOTENAME(TABLE_SCHEMA) + '.' + QUOTENAME(TABLE_NAME))
        FROM     INFORMATION_SCHEMA.TABLES
        WHERE         TABLE_TYPE = 'BASE TABLE'
            AND    QUOTENAME(TABLE_SCHEMA) + '.' + QUOTENAME(TABLE_NAME) > @TableName
            AND    OBJECTPROPERTY(
                    OBJECT_ID(
                        QUOTENAME(TABLE_SCHEMA) + '.' + QUOTENAME(TABLE_NAME)
                         ), 'IsMSShipped'
                           ) = 0
    )

    WHILE (@TableName IS NOT NULL) AND (@ColumnName IS NOT NULL)

    BEGIN
        SET @ColumnName =
        (
            SELECT MIN(QUOTENAME(COLUMN_NAME))
            FROM     INFORMATION_SCHEMA.COLUMNS
            WHERE         TABLE_SCHEMA    = PARSENAME(@TableName, 2)
                AND    TABLE_NAME    = PARSENAME(@TableName, 1)
                AND    DATA_TYPE IN ('char', 'varchar', 'nchar', 'nvarchar', 'int', 'decimal')
                AND    QUOTENAME(COLUMN_NAME) > @ColumnName
        )

        IF @ColumnName IS NOT NULL

        BEGIN
            INSERT INTO @Results
            EXEC
            (
                'SELECT ''' + @TableName + '.' + @ColumnName + ''', LEFT(' + @ColumnName + ', 3630) 
                FROM ' + @TableName + ' (NOLOCK) ' +
                ' WHERE ' + @ColumnName + ' LIKE ' + @SearchStr2
            )
        END
    END    
END

SELECT ColumnName, ColumnValue FROM @Results

Saya harap ini membantu Anda juga!


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Apa 6 Komponen Utama Microsoft Access?

  2. MayBeSQL Datang ke Microsoft Access!

  3. Cara Menambahkan Judul ke Header Formulir di Microsoft Access

  4. Cara Memperbarui Tabel Tertaut di Access 2016 setelah Basis Data Backend Pindah ke Lokasi Baru

  5. Mengapa Anda Harus Menggunakan PHPs PDO untuk Akses Database