發表文章

[SQL] 取得所有資料表的筆數

如果有複數的資料庫及資料表,一個一個下 SELECT COUNT(1) FROM TABLE 也挺麻煩的,所以花了一點時間撰寫 T-SQL 可以一次性抓取所有資料庫的資料表的筆數 語法如下: DECLARE @TABLES TABLE ( [TABLE_CATALOG] SYSNAME NOT NULL, [TABLE_SCHEMA] SYSNAME NOT NULL, [TABLE_NAME] SYSNAME NOT NULL ) DECLARE @COUNTS TABLE ( [COUNT] BIGINT NOT NULL, [TABLE_CATALOG] SYSNAME NOT NULL, [TABLE_SCHEMA] SYSNAME NOT NULL, [TABLE_NAME] SYSNAME NOT NULL ) DECLARE @SQL NVARCHAR(MAX) SET @SQL = (SELECT STUFF((SELECT N' UNION ALL SELECT TABLE_CATALOG, TABLE_SCHEMA, TABLE_NAME FROM ' + QUOTENAME(name) + N'.INFORMATION_SCHEMA.TABLES' FROM master.sys.databases WHERE NOT [name] IN (N'master', N'tempdb', N'msdb') FOR XML PATH(N'')), 1, 11, N'')) INSERT @TABLES EXEC sys.sp_executesql @SQL SET @SQL = (SELECT STUFF((SELECT N' UNION ALL SELECT COUNT(1), N' + QUOTENAME(TABLE_CATALOG, N'''') + ', N' + QUOTENAME(TABLE_SCHEMA, N'''') + ', N' + QUOTENAME(TABLE_NAME, N'...

使用 Emit 建立快速複製的代理函式

昨天示範了用 Expression Tree 作出一個快速的複製代理的程式 後來我想用同樣的結構,但改用 Emit 來寫出複製代理的程式

[C#] 使用 Expression Tree 建立快速複製代理

圖片
最近在寫工具,因為會去作壓測,確保資料量大時的執行時間 這時就會很重視執行時間,希望能盡可能的減少一些頻繁工作的執行時間 所以開始學習 Emit 及 Expression Tree,前者能玩的花招比較多,但是相對不直覺,需要有 IL 的底才行,而後者則相對容易一些。 而這次作的任務是希望可以作一個複製指定 Model 到另一個新實體上(就近似於 clone ),只是複製的 source 及 target 並不是相同類別,而是可能 target 的類別是繼承 source 的類別的,並且希望如果是物件的話,嘗試 new 出另一個新的物件建立並複製屬性值。

邏輯運算回憶筆記

 最近在寫程式時,因為作出了類似以下的語法 If flag Then     If props.Contains(prop.Name) Then       ....     End If Else     If Not props.Contains(prop.Name) Then       ....     End If End If 其中 .... 的語法其實是一樣的。

透過 7-zip 以指定密碼壓縮檔案

 以下主要提供我使用 powershell 來壓縮指定目錄下的所有 *.dll 的檔案(並且壓縮完後刪除檔案) 這個需要自己設定 Filter 及 7-zip 的 7z.exe 路徑 這篇文章主要是我留個紀錄

[SQL] 資料的轉置

又是一個簡單的 SQL ,作用應該不大,但是對我來說還蠻好用的,也算是個簡單的練習用 SQL 這裡的轉置不是在說樞紐分析的 PIVOT 及 UNPIVOT ,而是單純資料呈現的轉置 通常我們下的 SQL 可能如下: SELECT * FROM tempdb.dbo.temptable 但是我真的覺得這種橫向的有時會看的很亂,所以我改寫了相關的 CODE 讓輸出的呈現為"直列"來呈現,這段 SQL 主要使用到了 CTE, FOR XML 及 sp_executesql DECLARE @DBCatalog NVARCHAR(128) = N'tempdb' DECLARE @DBSchema NVARCHAR(128) = N'dbo' DECLARE @DBTable NVARCHAR(128) = N'temptable' DECLARE @Condition NVARCHAR(MAX) = N'ID = 1' DECLARE @SQL NVARCHAR(MAX) SET @SQL = N'SET @SQL = STUFF((SELECT N'' UNION ALL SELECT N'''''' + COLUMN_NAME + N'''''', CONVERT(NVARCHAR, '' + COLUMN_NAME + N'') FROM T'' FROM ' + QUOTENAME(@DBCatalog) + '.INFORMATION_SCHEMA.COLUMNS WHERE TABLE_CATALOG = @DBCatalog AND TABLE_SCHEMA = @DBSchema AND TABLE_NAME = @DBTable FOR XML PATH(N'''')), 1, 11, N'''')' exec sp_executesql @SQL, N'@DBCatalog NVARCHAR(...

Unicode 字碼分布表

前言: 因為工作因素,遇到轉換檔案的需求,因為發現他們給的加密過的檔案中有出現 0A 前面自動被補了一個 0D ,導致我解密無法正常處理,雖然我寫了個程式來排除這個狀況,但想確認有沒有可能會有影響到正常程式的運作,所以找了一下 Unicode 的編碼分佈資料,並留存以供自己參考。