Skip to content

Commit 94bf0cc

Browse files
Import-DbaCsv - Move library to Dataplat.Dbatools.Csv 😍 + Export-DbaCsv (#10005)
1 parent 9a96e60 commit 94bf0cc

File tree

9 files changed

+1735
-134
lines changed

9 files changed

+1735
-134
lines changed
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
{
2-
"version": "2025.11.12",
3-
"notes": "Version of dbatools.library to use for CI/CD and development"
2+
"version": "2025.11.29-preview-new-20251129132142",
3+
"notes": "Version of dbatools.library to use for CI/CD and development."
44
}

dbatools.psd1

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -419,6 +419,7 @@
419419
'Get-DbaXESessionTemplate',
420420
'Get-DbaXEStore',
421421
'Grant-DbaAgPermission',
422+
'Export-DbaCsv',
422423
'Import-DbaCsv',
423424
'Import-DbaPfDataCollectorSetTemplate',
424425
'Import-DbaRegServer',

dbatools.psm1

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -715,6 +715,7 @@ if ($PSVersionTable.PSVersion.Major -lt 5) {
715715
'Unregister-DbatoolsConfig',
716716
'Join-DbaPath',
717717
'Resolve-DbaPath',
718+
'Export-DbaCsv',
718719
'Import-DbaCsv',
719720
'Invoke-DbaDbDataMasking',
720721
'New-DbaDbMaskingConfig',

public/Export-DbaCsv.ps1

Lines changed: 389 additions & 0 deletions
Large diffs are not rendered by default.

public/Import-DbaCsv.ps1

Lines changed: 303 additions & 116 deletions
Large diffs are not rendered by default.

public/Remove-DbaCustomError.ps1

Lines changed: 27 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -108,13 +108,36 @@ function Remove-DbaCustomError {
108108

109109
if ($Pscmdlet.ShouldProcess($instance, "Removing server message with id $MessageID from $instance")) {
110110
Write-Message -Level Verbose -Message "Removing server message with id $MessageID and language $Language from $instance"
111+
112+
# Use sp_dropmessage directly - more reliable than SMO Drop() method
113+
# sp_dropmessage handles the proper drop order automatically
111114
try {
112-
# find the message using language or languageID or the 'session language' message if they specified 'all'. SMO will drop all related messages for an ID if the english message is dropped.
113-
$userDefinedMessage = $server.UserDefinedMessages | Where-Object { $_.ID -eq $MessageID -and ($_.Language -in $languageName, $languageAlias -or $_.LanguageID -eq $langId -or ($Language -ieq "All" -and $_.Language -like "*english")) }
114-
$userDefinedMessage.Drop()
115+
if ($Language -ieq "All") {
116+
$server.Query("EXEC sp_dropmessage @msgnum = $MessageID, @lang = 'all'")
117+
} else {
118+
# Check if this is English and other language versions exist
119+
# SQL Server requires all localized versions to be dropped before us_english
120+
# If dropping English, we must drop all versions
121+
if ($languageName -eq "us_english") {
122+
$otherLanguages = $server.Query("SELECT COUNT(*) AS cnt FROM sys.messages WHERE message_id = $MessageID AND language_id <> 1033")
123+
if ($otherLanguages.cnt -gt 0) {
124+
# Other languages exist, must drop all
125+
$server.Query("EXEC sp_dropmessage @msgnum = $MessageID, @lang = 'all'")
126+
} else {
127+
# Only English exists, drop just English
128+
$server.Query("EXEC sp_dropmessage @msgnum = $MessageID, @lang = '$languageName'")
129+
}
130+
} else {
131+
# Non-English language, drop just that language
132+
$server.Query("EXEC sp_dropmessage @msgnum = $MessageID, @lang = '$languageName'")
133+
}
134+
}
115135
} catch {
116-
Stop-Function -Message "Error occurred while trying to remove a message with id $MessageID from $instance" -ErrorRecord $_ -Continue
136+
Stop-Function -Message "Error occurred while trying to remove message $MessageID from $instance" -ErrorRecord $_ -Continue
117137
}
138+
139+
# Refresh the UserDefinedMessages collection to reflect the changes
140+
$server.UserDefinedMessages.Refresh()
118141
}
119142
}
120143
}

tests/Copy-DbaDbTableData.Tests.ps1

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -184,8 +184,8 @@ Describe $CommandName -Tag IntegrationTests {
184184
AfterAll {
185185
$PSDefaultParameterValues["*-Dba*:EnableException"] = $true
186186

187-
$null = $sourceDb.Query("DROP TABLE IF EXISTS dbo.dbatoolsci_computed_source")
188-
$null = $destinationDb.Query("DROP TABLE IF EXISTS dbo.dbatoolsci_computed_dest")
187+
$null = $sourceDb.Query("IF OBJECT_ID('dbo.dbatoolsci_computed_source', 'U') IS NOT NULL DROP TABLE dbo.dbatoolsci_computed_source")
188+
$null = $destinationDb.Query("IF OBJECT_ID('dbo.dbatoolsci_computed_dest', 'U') IS NOT NULL DROP TABLE dbo.dbatoolsci_computed_dest")
189189

190190
$PSDefaultParameterValues.Remove("*-Dba*:EnableException")
191191
}
@@ -211,8 +211,8 @@ Describe $CommandName -Tag IntegrationTests {
211211
AfterAll {
212212
$PSDefaultParameterValues["*-Dba*:EnableException"] = $true
213213

214-
$null = $sourceDb.Query("DROP TABLE IF EXISTS dbo.dbatoolsci_ordering_test")
215-
$null = $destinationDb.Query("DROP TABLE IF EXISTS dbo.dbatoolsci_ordering_test_dest")
214+
$null = $sourceDb.Query("IF OBJECT_ID('dbo.dbatoolsci_ordering_test', 'U') IS NOT NULL DROP TABLE dbo.dbatoolsci_ordering_test")
215+
$null = $destinationDb.Query("IF OBJECT_ID('dbo.dbatoolsci_ordering_test_dest', 'U') IS NOT NULL DROP TABLE dbo.dbatoolsci_ordering_test_dest")
216216

217217
$PSDefaultParameterValues.Remove("*-Dba*:EnableException")
218218
}

0 commit comments

Comments
 (0)