gpt4 book ai didi

powershell - PowerShell Access.Application Transfertext 将数字列导出到 CSV 文件时保持小数精度

转载 作者:行者123 更新时间:2023-12-04 15:49:51 25 4
gpt4 key购买 nike

我正在使用 Windows 2012 R2 服务器上的 powershell 将数据从 Access 表导出到 CSV 文件。我想在不修改 Access 数据库架构的情况下做到这一点,也不想在 access 数据库中编写任何 VBA 代码。

powershell 脚本可归结为如下内容:

$Table = 'tblUsers'
$Filepath = 'C:\tblUsers.csv'
$Acc = New-Object -Com Access.Application
$Acc.OpenCurrentDataBase($DBFilePath)
$Acc.DoCmd.Transfertext(2, [Type]::Missing, $Table, $Filepath, 1)

其中一个表有一个包含数字字段的列,其中字段大小为双倍,格式为百分比,小数位数设置为 2。该字段包含类似 100% 的值。 , 50% , 和 87.5% .当我运行此命令时,CSV 中 100% 值的输出为 ,1.00,87.5% 的输出是 ,0.87, .似乎这个过程中的某些东西正在降低这些列的有效数字。

脚本中有没有办法确保我获得数据库中每一列的所有有效数字?还有其他类型的列需要担心吗?

我知道有两种解决方案有缺点:

如果可能的话,我想要一个新的答案而不是这两个答案。这两个答案有明显的缺点。
  • From this forum thread :更改计算机上的语言设置,使其显示更多(最多 9 个)小数。我不希望整个计算机的十进制设置都必须更改,并且我不希望将新限制设置为 9 而不是 2 - 如果数据库中的数字在小数点后有 15 位有效数字怎么办?
  • 使用查询指定数据并将数字转换为字符串。这样做的缺点是需要我查看每列的定义并为每个表编写查询。我正在导出具有数百列的 30 多个表,所以这将是太多的工作。
  • 最佳答案

    此代码应导出结果,而无需对 Access 表或计算机设置进行任何修改。

    1) 它使用 Microsoft.Jet.OLEDB.4.0 driver
    2) 唯一的限制是它必须通过 PowerShell x86 运行, due to this limitation .或者,您可以安装 64 位驱动程序(帖子中的链接)。

    此 Access 表 ( tblFruit ) 有 3 个字段:

  • ID - 自动编号
  • 水果 - 短文本
  • 百分比 - 数字,字段大小: double ,格式:百分比,小数位数:2。

  • Table Data
    $csvPath = 'C:\temp\output.csv'
    $dbPath = 'C:\temp\database1.mdb'
    $strQuery = "SELECT * from tblFruit"

    $strConn = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=$dbPath"

    $connection = New-Object -TypeName System.Data.OleDb.OleDbConnection
    $connection.ConnectionString = $strConn
    $command = $connection.CreateCommand()
    $command.CommandText = $strQuery
    $adapter = New-Object -TypeName System.Data.OleDb.OleDbDataAdapter $command
    $dataset = New-Object -TypeName System.Data.DataSet
    $adapter.Fill($dataset)
    $dataset.Tables[0] | export-csv $csvPath -NoTypeInformation
    $connection.Close()

    输出:
    "ID","Fruit","Percent"
    "1","Apple","0.0142"
    "2","Orange","0.3412"
    "3","Banana","0.8715"

    关于powershell - PowerShell Access.Application Transfertext 将数字列导出到 CSV 文件时保持小数精度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57698695/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com