0

データ移行プロジェクトで不足しているデータを探しています。このレポートは非​​常に役立ちます。

MySQL テーブルが与えられた場合、そのテーブルの各行のすべての空 (NULL または '') 値をカウントしたいと思います。出力は、列名のリストと、各列の空または空でない行の数になります。このデータは、ソーステーブルと手動で比較するものです-正確に一致するカウントはほとんどなく、ソーステーブルとインポートテーブルの間で列名が完全に異なると予想されるため、手動で比較します。

チェックするテーブルが約 30 個あり、100 列のテーブルがいくつかあります。PC から MySQL に直接アクセスできますが、データベースを使用してサーバー上でスクリプトを実行するためのアクセス権はありません。

TableA の例

Col1 Col2 Col3
'XX' NULL 'XX'
'XX' NULL ''
'XX' 'XX' 'XX'
'XX' ''   'XX'

私が望むレポートは次のとおりです( '' が空としてカウントされる空でないカウントの場合):

Col1: 4
Col2: 1
Col3: 3
4

4 に答える 4

10

COUNT空の文字列もカウントするため、クエリは次のようになります。

SELECT COUNT( NULLIF( col1, '' ) ), COUNT( NULLIF( col2, '' ) ), ...
于 2011-08-27T23:32:04.303 に答える
2

各テーブルに次のクエリを使用できます

SELECT COUNT(*), COUNT(col1) as col1, COUNT(col2) as col2
FROM TABLE1

特定のテーブルのすべての列を取得するには、クエリを実行する必要があります

 select column_name from information_schema.columns where TABLE_NAME='TABLE1';

このクエリの結果は、最初のクエリのような自動生成クエリに使用できます。

于 2011-08-27T22:51:30.820 に答える
1

値を持つ行のみをカウントします (Null/空の行をスキップします)!!!

SELECT COUNT( NULLIF( Column_Name, '' ) ) from Table_name
于 2014-12-19T17:00:56.317 に答える