PowerShell - 一次计算文件夹中所有文件的accdb行

时间:2016-01-12 13:19:57

标签: powershell ms-access count powershell-v3.0

我知道我可以通过使用powershell来计算csv有多少行而不打开它。 例如:

ParseQuery parseQuery = new ParseQuery("pictures");
parseQuery.setLimit(5);
parseQuery.findInBackground(your_method_name);

我需要为多个访问文件(.accdb)执行此操作。此时对于给定文件夹中的每个(和所有)文件,然后我想将行相加(该文件夹中所有文件的总和)。有解决方案吗?

谢谢

2 个答案:

答案 0 :(得分:3)

为了以后访问者的利益,这里有一个PowerShell脚本,它计算指定文件夹中每个.accdb文件的非系统表中的所有行:

$connStrStub = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source="
$numFiles = 0
$numTables = 0
$totalRows = 0
foreach ($f in Get-ChildItem -Path C:\Users\Public\test\*.accdb)
{
    $numFiles++
    $conn = New-Object System.Data.OleDb.OleDbConnection ($connStrStub + $f.FullName)
    $conn.Open()
    $schemaTable = $conn.GetSchema("TABLES")
    foreach ($dtRow in $schemaTable)
    {
        $tblName = $dtRow["TABLE_NAME"]
        if (!$tblName.StartsWith("MSys"))
        {
            $numTables++
            $cmd = New-Object System.Data.OleDb.OleDbCommand "SELECT COUNT(*) AS n FROM [$tblName]", $conn
            $totalRows += $cmd.ExecuteScalar()
        }
    }
    $conn.Close()
}
write-output "files: $numFiles"
write-output "user_tables: $numTables"
write-output "total_rows: $totalRows"

答案 1 :(得分:0)

我放弃了尝试使用powershell。 但是我设法通过使用SQl服务集成服务来计算所有行。使用foreach(遍历所有文件),在循环内部有一个任务,该任务从每个文件中选择计数并将结果输出到xls中。

谢谢大家的时间