Access
 sql >> डेटाबेस >  >> RDS >> Access

संग्रहीत डेटा के लिए Microsoft SQL सर्वर डेटाबेस खोजें

संग्रहीत डेटा के लिए Microsoft SQL सर्वर डेटाबेस खोजें

क्या आपको कभी किसी डेटाबेस को समझना पड़ा है और यह पहचानना है कि आपको किस कॉलम में डेटा की आवश्यकता है?

मुझे हाल ही में Microsoft Access और Power BI में उपयोग करने के लिए SQL डेटाबेस से डेटा निकालने के साथ काम करना पड़ा, दुर्भाग्य से डेटाबेस की नामकरण संरचना बहुत सहज नहीं थी।

मेरे पास एकमात्र गाइड थी जो एक रिपोर्ट थी जिसमें डेटा का एक उदाहरण दिखाया गया था जिसे निकालने की आवश्यकता थी, जिसमें ऐसे लेबल थे जिनमें कॉलम नामों का कोई संदर्भ नहीं था। इसका मतलब डेटाबेस को खोजने और प्रत्येक तालिका की समीक्षा करने के घंटों का काम हो सकता था, इस विशेष डेटाबेस में 288 टेबल थे।

मैंने अतीत में तालिकाओं में एक कॉलम खोजने के लिए कोड का उपयोग किया है, लेकिन इस मामले में यह मेरी मदद नहीं करेगा।

सौभाग्य से, मुझे एक बहुत ही रोचक लेख मिला। मेरी जरूरतों के लिए। मुझे बस वेरिएबल को उस टेक्स्ट के साथ सेट करने की आवश्यकता थी जिसे मैं ढूंढ रहा था और कोड चला रहा था। कुछ ही सेकंड में मुझे टेबल और कॉलम की एक सूची प्रदान की गई जहां टेक्स्ट दिखाई दिया। बहुत पहले मेरे पास उन तालिकाओं और स्तंभों की एक सूची थी जिन्हें मुझे अपने प्रोजेक्ट में शामिल करने की आवश्यकता थी।

कृपया ध्यान दें कि यह समाधान केवल SQL सर्वर तालिकाओं पर लागू होता है और SQL सर्वर प्रबंधन स्टूडियो में चलाया जाता है। आपके पास SQL ​​सर्वर इंस्टेंस भी होना चाहिए जो तालिका चर का समर्थन करता हो।

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

मुझे आशा है कि इससे आपको भी मदद मिलेगी!


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. माइक्रोसॉफ्ट एक्सेस क्या है? नए उपयोगकर्ताओं के लिए एक संक्षिप्त परिचय

  2. माइक्रोसॉफ्ट एक्सेस टेबल टिप्स - ट्रिक्स और दिशानिर्देश भाग III

  3. आपकी बैठकों से अधिक से अधिक प्राप्त करने के लिए 7 रणनीतियाँ

  4. 25 माइक्रोसॉफ्ट एक्सेस शॉर्टकट डेटाशीट व्यू में टेबल्स में समय बचाने के लिए

  5. अपने डेटाबेस में उपयोगकर्ता पहुंच को सीमित करना क्यों महत्वपूर्ण है