現在使用しているデータベース上で、
テーブルが何件のデータ件数があるかを取得する必要があったため、SQLを作成してみました。
1テーブルだけであれば、単純にcount関数で取得すれば良いのですが、たくさんのテーブルを確認するとなるとテーブル名を指定する必要があるなど大変。
1つのクエリでまとめてとれたら楽だよねということで、作成してみました。
最初に完成系のクエリを書いておくと、このようになります。
SELECT
t.NAME AS TableName,
p.rows AS RowCounts
FROM
sys.tables t
INNER JOIN
sys.indexes i ON t.OBJECT_ID = i.object_id
INNER JOIN
sys.partitions p ON i.object_id = p.OBJECT_ID AND i.index_id = p.index_id
GROUP BY
t.NAME, p.Rows
ORDER BY
TableName;
このクエリをSqlServerManagementStudioやAzure Studioで取得したいデータベースで実行すれば取得できます。
テーブルのデータ数を取得するクエリが必要になった経緯
今回はACCESSで運用されていたデータベースからCSV出力し、SqlServerへのデータ移行が必要な案件です。
SqlServerへの移行後、正しくデータが移行できているかを確認するために必要になりました。
一つ一つ見ていってもいいのですが、テーブル数が100以上を超えてくると流石に手間なのでできる限り短時間で解決するために使用しました。