SqlServer表結構查詢

来源:http://www.cnblogs.com/kai364/archive/2016/07/29/5718096.html
-Advertisement-
Play Games

一、前言 近兩天項目升級數據遷移,將老版本(sqlserver)的數據遷移到新版本(mysql)資料庫,需要整理一個Excel表格出來,映射兩個庫之間的表格欄位,示例如下: Mysql資料庫查詢表結構很方便,用客戶端(SQLyog)可以直接複製出需要的表結構,據說可以用簡單的命令查詢表結構,但是不會 ...


一、前言

  近兩天項目升級數據遷移,將老版本(sqlserver)的數據遷移到新版本(mysql)資料庫,需要整理一個Excel表格出來,映射兩個庫之間的表格欄位,示例如下:

  

  Mysql資料庫查詢表結構很方便,用客戶端(SQLyog)可以直接複製出需要的表結構,據說可以用簡單的命令查詢表結構,但是不會...

  Sqlserver導出表結構就很坑爹了,首先呢客戶端不支持,表設計頁面雖說可以複製表結構但是不包含欄位註釋,想想這種場景應該很常見不可能沒有解決方案的,於是在網上發現了一段腳本,稍加調整就可以查詢出需要的表結構

 

二、腳本及查詢示例

 1 SELECT  表名 = CASE WHEN a.colorder = 1 THEN d.name ELSE '' END ,
 2         欄位說明 = ISNULL(g.[value], '') ,
 3         欄位名 = a.name ,
 4         類型 = CASE WHEN b.name IN ( 'varchar', 'nvarchar' )
 5                   THEN b.name + '('
 6                        + CAST(COLUMNPROPERTY(a.id, a.name, 'PRECISION') AS VARCHAR(4))
 7                        + ')'
 8                   WHEN b.name = 'decimal'
 9                   THEN b.name + '('
10                        + CAST(COLUMNPROPERTY(a.id, a.name, 'PRECISION') AS VARCHAR(4))
11                        + ','
12                        + CAST(COLUMNPROPERTY(a.id, a.name, 'Scale') AS VARCHAR(4))
13                        + ')'
14                   ELSE b.name
15              END
16 FROM syscolumns a    -- 列名
17     LEFT JOIN systypes b ON a.xusertype = b.xusertype    -- 類型
18     INNER JOIN sysobjects d ON a.id = d.id AND d.xtype = 'U' AND d.name <> 'dtproperties'    --篩選用戶對象
19     --LEFT JOIN syscomments e ON a.cdefault = e.id    --預設值
20     LEFT JOIN sys.extended_properties g ON a.id = g.major_id AND a.colid = g.minor_id    --擴展屬性(欄位說明)
21     --LEFT JOIN sys.extended_properties f ON d.id = f.major_id AND f.minor_id = 0        --擴展屬性(表說明)
22 WHERE d.name = 'Merchant'    --可修改表名
23 ORDER BY a.id , a.colorder  
View Code

 

  

 

三、參考鏈接

  http://blog.csdn.net/shandian534/article/details/39249245

 

四、腳本解讀

syscolumns
為每個表和視圖中的每列返回一行,併為資料庫中的存儲過程的每個參數返回一行。
name 列名或過程參數的名稱。
id 此列所屬表的對象 ID,或者與此參數關聯的存儲過程的 ID
xusertype 擴展的用戶定義數據類型的 ID
colid 列 ID 或參數 ID

 

 

 

 

 

systypes
對於每種系統提供數據類型和用戶定義數據類型,均包含一行信息。
name 數據類型名稱
xusertype 擴展用戶類型

 

 

 

sysobjects
在資料庫中創建的每個對象(例如約束、預設值、日誌、規則以及存儲過程)都對應一行
id  對象標識號
xtype  對象類型。 可以是以下對象類型之一:

AF = 聚合函數 (CLR)

C = CHECK 約束

D = 預設值或 DEFAULT 約束

F = FOREIGN KEY 約束

L = 日誌

FN = 標量函數

FS = 程式集 (CLR) 標量函數

FT = 程式集 (CLR) 表值函數

IF = 內聯表函數

IT = 內部表

P = 存儲過程

PC = 程式集 (CLR) 存儲過程

PK = PRIMARY KEY 約束(type 為 K)

RF = 複製篩選存儲過程

S = 系統表

SN = 同義詞

SQ = 服務隊列

TA = 程式集 (CLR) DML 觸發器

TF = 表函數

TR = SQL DML 觸發器

TT = 表類型

U = 用戶表

UQ = UNIQUE 約束(type 為 K)

V = 視圖

X = 擴展存儲過程
name 對象名(dtproperties自動生成表此處不討論

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

sys.extended_properties
針對當前資料庫中的每個擴展屬性返回一行
class

標識其上存在屬性的項類。 可以是下列值之一:

0 = 資料庫

1 = 對象或列

2 = 參數

3 = 架構

4 = 資料庫主體

5 = 程式集

6 = 類型

7 = 索引

10 = XML 架構集合

15 = 消息類型

16 = 服務約定

17 = 服務

18 = 遠程服務綁定

19 = 路由

20 = 數據空間(文件組或分區方案)

21 = 分區函數

22 = 資料庫文件

27 = 計劃指南

major_id

其上存在擴展屬性的項的 ID,根據項類進行解釋。 對於大多數項,該 ID 適用於類所表示的項。 下列是非標準主 ID 的解釋:

如果 class 為 0,則 major_id 始終為 0。

如果 class 為 1、2 或 7,則 major_id 為 object_id。

minor_id

其上存在擴展屬性的項的輔助 ID,根據項類進行解釋。 對於大多數項,ID 為 0;否則,ID 為下列值之一:

如果 class = 1,則 minor_id 在項為列的情況下等於 column_id,在項為對象的情況下等於 0。

如果 class = 2,則 minor_id 為 parameter_id。

如果 class = 7,則 minor_id 為 index_id。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

COLUMNPROPERTY
返回有關列或參數的信息
參數:
id 一個表達式,其中包含表或過程的標識符 (ID)
column 一個表達式,其中包含列或參數的名稱
property 一個表達式,其中包含要為 id 返回的信息

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • Spark從1.6.0版本開始,記憶體管理模塊就發生了改變,舊版本的記憶體管理模塊是實現了StaticMemoryManager 類,現在被稱為"legacy"。"Legacy"模式預設被置為不可用,這就意味著當你用Spark1.5.x和Spark1.6.x運行相同的代碼會有不同的結果,應當多加註意。考 ...
  • 這是spark1.5及以前堆記憶體分配圖 下邊對上圖進行更近一步的標註,紅線開始到結尾就是這部分的開始到結尾 spark 預設分配512MB JVM堆記憶體。出於安全考慮和避免記憶體溢出,Spark只允許我們使用堆記憶體的90%,這在spark的spark.storage.safetyFraction 參數 ...
  • 一、介紹基本資料庫的埠號、 SQLServer 埠號:1433 MySql 埠號:3306 Oracle 埠號:1521 二、orcl的基礎介紹 1)什麼是orcl 是一款關係型(二維表)資料庫,可以用來存儲海量數據。在大數據量併發檢索的情況下,性能要高於其他的同類資料庫產品。一般運行環境是 ...
  • 安裝 配置資料庫 配置驅動 配置連接 配置驅動 配置連接 如果你的工作中,需要使用到多個資料庫,又不想在多種客戶端之間切換來切換去。那麼就需要找一款支持多資料庫的客戶端工具了。如果你要連接多個關係型資料庫,你就可以使用Navicat Premium。但是如果你有使用到NOSQL(譬如HBase、Mo ...
  • 當我看到sql執行很慢的時候就在想為什麼這麼慢? 不外乎數據大,sql語句複雜,沒有索引。 如果要進行優化的話可以從對應的這三個問題出發: 看看表是否可以進行拆分成小表,拆分sql語句,建立適合的索引。 還有查看sql server官方API文檔,瞭解sql的關鍵字執行順序,瞭解執行順序後才能更好的 ...
  • 1.事務的四個屬性 原子性Atomicity,一致性Consistency,隔離性Isolation,持久性Durability ,即ACID特性。 原子性:事務必須是一個完整工作的單元,要麼全部執行,要麼全部不執行。 一致性:事務結束的時候,所有的內部數據都是正確的。 隔離性:併發多個事務時,各個 ...
  • 背景 在使用Oracle或者其它資料庫時,使用like 關鍵字進行模糊查詢是大家經常使用的功能,在純中文環境中使用非常好用,還有一些通配符可以使用,但是在純英文環境中,會出現大小需要精確匹配的問題,主要原因還是字元串的問題 FL like '%{0}%' and 這裡like後是一個字元串,這樣必然 ...
  • 利用SQl對資料庫實行數據拆分與組合實現提供以下幾種方案: 方法一: WITH CTE AS (SELECT A.Id,A.[Uid],UserName FROM (SELECT A.[id], REPLACE(Split.a.value('.', 'NVARCHAR(max)'),'''','') ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...