Export SQL Server Tables to CSVs in Bulk¶
Source: Personal PowerShell Code
Export-SQLTablesToCSV
Function Export-SQLTablesToCSV {
<#
.DESCRIPTION
Exports all tables from a fiven database and server to CSVs into a supplied output path.
.SYNOPSIS
Utility for Exporting CSV tables from SQL Server Databases.
.INPUTS
Database connection arguments and an output path.
.OUTPUTS
Exported CSVs.
.PARAMETER OutputPath
Path to export CSVs to
.PARAMETER Server
Database Server
.PARAMETER User
Database User
.PARAMETER Password
Database Password
.PARAMETER Database
Server Database
.LINK
.NOTES
.EXAMPLE
$outputPath = 'C:\CSV\'
$server = 'myserver.database.windows.net'
$user = 'admin'
$pw = Read-Host -AsSecureString
$db = 'dev'
Export-SQLTableToCSV $outputPath $server $user $pw $db
#>
[CmdletBinding()]
param (
[Parameter(Mandatory = $true, Position = 0, HelpMessage = 'Destination Path for Exported CSV Files.')]
[string]
$OutputPath,
[Parameter(Position = 1, HelpMessage = 'Database Server')]
[string]
$Server,
[Parameter(Position = 2, HelpMessage = 'Database Username to login with')]
[string]
$User,
[Parameter(Position = 3, HelpMessage = 'Database Password to login with.')]
[string]
$Password,
[Parameter(Position = 4, HelpMessage = 'Database on the server to connect to.')]
[string]
$Database
)
# validate OutputPath
If (!(Test-Path $OutputPath)) {
Write-Warning 'Specified OutputPath does not exist.'
New-Item -ItemType Directory -Path $OutputPath -Force
}
# decrypt password
# $passwordString = ConvertFrom-SecureString -SecureString $Password
# collect tables
$tbls = (Invoke-Sqlcmd -Query 'SELECT NAME FROM sys.tables' -ServerInstance $server -Database $db -Username $user -Password $Password).NAME
# setup counter
$counter = 1
$total = $tbls.Count
ForEach ($tbl in $tbls) {
$qry = "SELECT * from [dev].[dbo].[$tbl];"
$destFile = $outputPath + $tbl + '.csv'
Write-Host "Exporting Table $counter of $total" -ForegroundColor Cyan
try {
Write-Host "Exporting Table: $tbl to path: $destFile" -ForegroundColor Yellow
Write-Host "Executing Query: $qry" -ForegroundColor Magenta
Invoke-Sqlcmd -Query $qry -ServerInstance $server -Database $db -Username $user -Password $Password | `
Export-Csv -Path $destFile -NoTypeInformation -ErrorAction Continue
} catch {
Write-Host "Error exporting table: $tbl. Skipping and continuing to next export..." -ForegroundColor Red
} finally {
If (Test-Path $destFile) {
Write-Host "Successfully exported $tbl to CSV file at path $destFile!" -ForegroundColor Green
}
$counter = $counter + 1
}
}
Explorer.exe $OutputPath
}
Appendix: Links¶
- Code
- Development
- Windows
- Microsoft DOS
- Command Line
- 2-Areas/MOCs/PowerShell
Backlinks:
list from [[Export SQL Server Tables to CSVs in Bulk]] AND -"Changelog"