【问题标题】:How to keep SQL format when exporting to CSV/Excel导出为 CSV/Excel 时如何保持 SQL 格式
【发布时间】:2019-09-17 20:05:26
【问题描述】:

我想将 SQL 查询结果导出到 Sxcel 文件 (xlsx)。 我找到了一个模块 (https://www.powershellgallery.com/packages/ImportExcel/6.0.0) 来执行此操作,但生成的 xlsx 文件包含一些不需要的和不存在的列,例如 RowStateItemArrayHasErrorTable。 我使用了以下命令:

$DataSet.Tables[0] | Export-Excel -Path "C:\temp\xxxx.xlsx" -AutoSize

为避免这种情况,我将查询导出为 CSV 文件

$DataSet.Tables[0] | Export-Csv -Path "C:\temp\xxxx.csv" -Delimiter ';' -NoTypeInformation -Encoding UTF8

它不会导出这些不需要的列。我使用

加载它
$test = Import-Csv -Path "C:\temp\xxxx.csv" -Delimiter ';'

然后我将它导出到 xlsx:

$test | Export-Excel -Path "C:\temp\xxxx.xlsx" -AutoSize

我的 Excel 文件现在没有额外的列。

我的问题是,对于 CSV 和 Excel 文件,格式输出都是错误的。例如,我得到8,0154E+16 而不是80154026286723600。 因此,如果我将 CSV 或 Excel 转换为 SQL 查询,则会导致

INSERT INTO smting ('iddoss', 'codeexterne') VALUES ('2','8.01540262867236E+16');

这是错误的。

如何在导出到 CSV 或 Excel 时保留 SQL 查询的初始格式?

【问题讨论】:

  • 在 Excel 中更改列的格式?
  • @Larnu 我希望它是自动的,而不是手动的。所以它会被添加到脚本代码中
  • 你需要查看你正在使用的包的模块文档。如果它 can 格式化列,它将出现在它的文档中。如果不是,则不能,您需要使用不同的方法;例如 SSIS(可以导出到现有文件,因此将使用已设置的格式)。
  • $DataSet.Tables[0] | Select-Object -Exclude RowState, ItemArray, HasError, Table | Export-Excel ...?

标签: sql-server excel powershell csv export-to-csv


【解决方案1】:

使用NoNumberConversion 属性解决:

$test | Export-Excel -Path "C:\temp\xxxx.xlsx" -AutoSize -NoNumberConversion '*'

【讨论】:

    猜你喜欢
    • 2019-05-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-03
    • 2019-11-08
    • 1970-01-01
    • 2018-04-15
    • 1970-01-01
    相关资源
    最近更新 更多