保持出口零领先

Keep Leading Zero In Export

我正在使用 powershell 运行 sql 查询并导出到 csv 文件。 Process 运行良好,但它在我的一个专栏中删除了前导 0。 SQL 服务器中的字段类型是 varchar(不幸的是不能更改它),这是我的语法。是否可以继续使用我的 powershell 导出过程并保持前导零?

$GoodSyntax = "Select * From tableunknown"
$extractFile = "C:\Test.csv"
Execute-SQLquery 
if (Execute-SQLquery $GoodSyntax) 

Function Execute-SQLquery {
  param ($GoodSyntax)

$server = "Server01"
$database = "database01"    
$connectionTemplate = "Data Source={0};Integrated Security=SSPI;Initial Catalog={1};"
$connectionString = [string]::Format($connectionTemplate, $server, $database)
$connection = New-Object System.Data.SqlClient.SqlConnection
$connection.ConnectionString = $connectionString
$command = New-Object System.Data.SqlClient.SqlCommand
$command.CommandText = $QueryString
$command.Connection = $connection
$SqlAdapter = New-Object System.Data.SqlClient.SqlDataAdapter
$SqlAdapter.SelectCommand = $command
$DataSet = New-Object System.Data.DataSet
$rowCount = $SqlAdapter.Fill($DataSet)
    $DataSet.Tables[0] | Export-Csv $extractFile -NoTypeInformation

    $connection.Close()

编辑--- 经过进一步检查,并在像记事本++这样的原始编辑器中打开我的 CSV 文件,前导零是他们的!当您尝试查看 Excel 中的文件时,它们会被丢弃。所以 Excel 是这里的罪魁祸首。

我从未见过 sql 从 varchar 中删除任何数据。你如何测试这个?也许问题不在 sql 中,而在您用来查看数据的任何内容中。

我知道 Excel 确实会删除前导 0,因为它试图变得聪明并将字符转换为数字,但 sql 不会。

尝试查看 $DataSet.GetXml() 的结果,这将更清楚地显示原始数据。

$connection.Close()

$DataSet.GetXml()

更新:Excel 去除了前导 0,这让您感到困惑。 sql 数据正确。

如何在excel

中打开csv文件时指定格式

http://www.upenn.edu/computing/da/bo/webi/qna/iv_csvLeadingZeros.html

通常我会根据数据创建一个 xml/html 文件。 Excel会打开,支持各种属性控制格式的数据,但是比较乱。

您应该可以执行以下操作:

$a = "1000"
$a = $a.substring($a.length - 3, 37)

参考。 - https://technet.microsoft.com/en-us/library/ee176945.aspx