Private/duckdb/Write-DuckDBAppender.ps1
|
function Write-DuckDBAppender { <# .SYNOPSIS Writes data into a table using the DuckDB Appender (plain INSERT, fast). .DESCRIPTION All rows must already be normalized (Repair-DuckDBRow). The property order in the PSObject must match the column order in the table. #> [CmdletBinding()] param( [Parameter(Mandatory)] [DuckDB.NET.Data.DuckDBConnection]$Connection, [Parameter(Mandatory)] [string]$TableName, [Parameter(Mandatory)] $Data ) $appender = $Connection.CreateAppender($TableName) foreach ($row in $Data) { $appenderRow = $appender.CreateRow() foreach ($prop in $row.PSObject.Properties) { $val = ConvertTo-DuckDBValue -Value $prop.Value [void]$appenderRow.AppendValue($val) } $appenderRow.EndRow() } $appender.Close() Write-Verbose "[$TableName] Appender finished." } |