如何使用 PowerShell 的 SqlClient.SqlConnection 以正确的编码从数据库中提取数据?
How to extract data from DB with correct encoding using PowerShell's SqlClient.SqlConnection?
我有以下工作代码:
Function DumpAssets {
Param(
[string]$DestinationPath = 'X:\path\to\dump_folder'
)
$SQLServer = "SQLSERVER123"
$SQLDBName = "SUPER_DB"
$SqlQuery = "SELECT * FROM Lorem_Ipsum"
$SqlConnection = New-Object System.Data.SqlClient.SqlConnection
$SqlConnection.ConnectionString = "Server = $SQLServer; Database = $SQLDBName; Integrated Security = True"
$SqlCmd = New-Object System.Data.SqlClient.SqlCommand
$SqlCmd.CommandText = $SqlQuery
$SqlCmd.Connection = $SqlConnection
$SqlAdapter = New-Object System.Data.SqlClient.SqlDataAdapter
$SqlAdapter.SelectCommand = $SqlCmd
$DataSet = New-Object System.Data.DataSet
$SqlAdapter.Fill($DataSet) | Out-Null
$SqlConnection.Close()
$DataSet.Tables[0] | Export-Csv "$DestinationPath\dump.csv" -Force -NoTypeInformation
}
DumpAssets
脚本按预期工作,我得到了包含 Lorem_Ipsum
table 中所有行的 CSV。问题是我有带重音的数据,它们不会正确显示,而是我得到一堆 ?
,例如:SÃO PAULO
变成 S?O PAULO
。如果我用 MS SQL Viewer、Power BI 或任何其他可以访问数据库的工具打开 table,它将正确显示。
如何修复我的代码以便正确格式化输出?
您可以在 Export-Csv
中使用参数 -Encoding
指定编码:
$DataSet.Tables[0] | Export-Csv "$DestinationPath\dump.csv" -Encoding UTF8 -Force -NoTypeInformation
我有以下工作代码:
Function DumpAssets {
Param(
[string]$DestinationPath = 'X:\path\to\dump_folder'
)
$SQLServer = "SQLSERVER123"
$SQLDBName = "SUPER_DB"
$SqlQuery = "SELECT * FROM Lorem_Ipsum"
$SqlConnection = New-Object System.Data.SqlClient.SqlConnection
$SqlConnection.ConnectionString = "Server = $SQLServer; Database = $SQLDBName; Integrated Security = True"
$SqlCmd = New-Object System.Data.SqlClient.SqlCommand
$SqlCmd.CommandText = $SqlQuery
$SqlCmd.Connection = $SqlConnection
$SqlAdapter = New-Object System.Data.SqlClient.SqlDataAdapter
$SqlAdapter.SelectCommand = $SqlCmd
$DataSet = New-Object System.Data.DataSet
$SqlAdapter.Fill($DataSet) | Out-Null
$SqlConnection.Close()
$DataSet.Tables[0] | Export-Csv "$DestinationPath\dump.csv" -Force -NoTypeInformation
}
DumpAssets
脚本按预期工作,我得到了包含 Lorem_Ipsum
table 中所有行的 CSV。问题是我有带重音的数据,它们不会正确显示,而是我得到一堆 ?
,例如:SÃO PAULO
变成 S?O PAULO
。如果我用 MS SQL Viewer、Power BI 或任何其他可以访问数据库的工具打开 table,它将正确显示。
如何修复我的代码以便正确格式化输出?
您可以在 Export-Csv
中使用参数 -Encoding
指定编码:
$DataSet.Tables[0] | Export-Csv "$DestinationPath\dump.csv" -Encoding UTF8 -Force -NoTypeInformation