From 4525b068c0b2c7164c51f3b64454ba3005768c03 Mon Sep 17 00:00:00 2001 From: "claude[bot]" <41898282+claude[bot]@users.noreply.github.com> Date: Sun, 5 Apr 2026 08:31:58 +0000 Subject: [PATCH] Export-DbaCsv, Export-DbaDacPackage - Normalize table/schema names via Get-ObjectNameParts Fixes Group 3 of issue #9010: naive dot-split parsing failed for bracketed dotted table names like [Gross.Table.Name]. - Export-DbaCsv: replace regex ^(.+)\.(.+)$ with Get-ObjectNameParts call - Export-DbaDacPackage: replace tableItem.Split('.') with Get-ObjectNameParts call (do Export-DbaCsv, Export-DbaDacPackage) Co-authored-by: Andreas Jordan --- public/Export-DbaCsv.ps1 | 10 +++++----- public/Export-DbaDacPackage.ps1 | 13 ++++++------- 2 files changed, 11 insertions(+), 12 deletions(-) diff --git a/public/Export-DbaCsv.ps1 b/public/Export-DbaCsv.ps1 index 9eba614c49bb..32e6054775c7 100644 --- a/public/Export-DbaCsv.ps1 +++ b/public/Export-DbaCsv.ps1 @@ -288,14 +288,14 @@ function Export-DbaCsv { if ($PSBoundParameters.Query) { $sqlToExecute = $Query } elseif ($PSBoundParameters.Table) { - # Parse table name for schema - if ($Table -match "^(.+)\.(.+)$") { - $schemaName = $Matches[1] - $tableName = $Matches[2] + # Parse table name for schema using Get-ObjectNameParts to correctly handle bracketed names like [Gross.Table.Name] + $nameParts = Get-ObjectNameParts -ObjectName $Table + if ($nameParts.Schema) { + $schemaName = $nameParts.Schema } else { $schemaName = "dbo" - $tableName = $Table } + $tableName = $nameParts.Name $sqlToExecute = "SELECT * FROM [$schemaName].[$tableName]" } diff --git a/public/Export-DbaDacPackage.ps1 b/public/Export-DbaDacPackage.ps1 index 54811e8a39b1..4e6ef960797f 100644 --- a/public/Export-DbaDacPackage.ps1 +++ b/public/Export-DbaDacPackage.ps1 @@ -184,15 +184,14 @@ function Export-DbaDacPackage { if ($Table) { $tblList = New-Object 'System.Collections.Generic.List[Tuple[String, String]]' foreach ($tableItem in $Table) { - $tableSplit = $tableItem.Split('.') - if ($tableSplit.Count -gt 1) { - $tblName = $tableSplit[-1] - $schemaName = $tableSplit[-2] + # Use Get-ObjectNameParts to correctly handle bracketed names like [Gross.Table.Name] + $nameParts = Get-ObjectNameParts -ObjectName $tableItem + if ($nameParts.Schema) { + $schemaName = $nameParts.Schema } else { - $tblName = [string]$tableSplit - $schemaName = 'dbo' + $schemaName = "dbo" } - $tblList.Add((New-Object "tuple[String, String]" -ArgumentList $schemaName, $tblName)) + $tblList.Add((New-Object "tuple[String, String]" -ArgumentList $schemaName, $nameParts.Name)) } } else { $tblList = $null