我知道我可以通过使用powershell来计算csv有多少行而不打开它。 例如:
ParseQuery parseQuery = new ParseQuery("pictures");
parseQuery.setLimit(5);
parseQuery.findInBackground(your_method_name);
我需要为多个访问文件(.accdb)执行此操作。此时对于给定文件夹中的每个(和所有)文件,然后我想将行相加(该文件夹中所有文件的总和)。有解决方案吗?
谢谢
答案 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中。
谢谢大家的时间