PowerShell - 一次计算文件夹中所有文件的 accdb 行数
PowerShell - count accdb rows for all the files in folder at once
我知道我可以计算一个 csv 有多少行,而无需使用 powershell 打开它。
示例:
import-csv C:\MyFolde\myfile.csv | Measure-Object
我需要为多路访问文件 (.accdb) 执行此操作。这次对于给定文件夹中的每个(和所有)file/s,然后我想对行求和(该文件夹中所有文件的总和)。有解决办法吗?
谢谢
我放弃了尝试使用 powershell。
但是,我设法使用 SQl 服务集成服务对所有行进行了计数。使用 foreach(遍历所有文件),在循环内部有一个任务,每个文件都有一个 select 计数并将结果输出到 xls.
谢谢大家的宝贵时间
为了未来访问者的利益,这里有一个 PowerShell 脚本,它计算指定文件夹中每个 .accdb 文件的 non-system 表中的所有行数:
$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"
我知道我可以计算一个 csv 有多少行,而无需使用 powershell 打开它。 示例:
import-csv C:\MyFolde\myfile.csv | Measure-Object
我需要为多路访问文件 (.accdb) 执行此操作。这次对于给定文件夹中的每个(和所有)file/s,然后我想对行求和(该文件夹中所有文件的总和)。有解决办法吗?
谢谢
我放弃了尝试使用 powershell。 但是,我设法使用 SQl 服务集成服务对所有行进行了计数。使用 foreach(遍历所有文件),在循环内部有一个任务,每个文件都有一个 select 计数并将结果输出到 xls.
谢谢大家的宝贵时间
为了未来访问者的利益,这里有一个 PowerShell 脚本,它计算指定文件夹中每个 .accdb 文件的 non-system 表中的所有行数:
$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"