【问题标题】:Powershell script to export Microsoft Access query or table into CSV file用于将 Microsoft Access 查询或表导出到 CSV 文件的 Powershell 脚本
【发布时间】:2017-01-09 13:55:10
【问题描述】:

我已经开始编写基本脚本。理想情况下,它会在 Access 中运行查询,然后获取查询结果并输入 CSV,但它似乎没有向我的 CSV 写入任何内容(尽管它的修改日期/时间正在更改)。

我错过了什么?

$Acc = New-Object –Com Access.Application

$Acc.OpenCurrentDataBase("H:\TEST.mdb")

#Runs the query
$Acc.DoCmd.OpenQuery("Query1")

#Dealing with results
$Results = $Acc.DoCmd.OpenQuery("Query1")

$Results | Select-Object $Results | Export-Csv -Path H:\test.csv -Delimiter ";"

我也尝试过以这个结尾:

$Results | Out-File -Append H:\test2.csv -Encoding UTF8

【问题讨论】:

  • $Results 是空的吗?
  • 不,如果我手动运行查询,它至少会产生很少的结果。
  • @glass_kites $results 是一个字符串数组还是可以表示为一个的东西? $results.GetType().Fullname$Results | Select-Object $Results 对我来说似乎很奇怪。如果 $results 是一个对象,那么您可以完全删除选择吗?
  • 您正在使用 COM 对象进行访问。您所做的相当于在 word 中打开一个 .doc 文件。你可能想试试这样的blogs.technet.microsoft.com/heyscriptingguy/2009/08/13/…
  • 我的查询(我将其命名为 $Results)的输出最终成为 Access 中 8 列表的数据表视图。如果这有帮助?

标签: vba powershell ms-access


【解决方案1】:

OpenQuery() 方法只是在 Access 中打开查询。它不返回查询结果。您可以使用TransferText() 方法将查询定义的结果集保存为 CSV:

$acc.DoCmd.Transfertext(2, [Type]::Missing, 'Query1', 'H:\test.csv', $true)

【讨论】:

  • 我试过这行代码。它确实打印到一个文件,但对我来说有两个小问题。 1.我想将分隔符从逗号更改为制表符,其次,我希望删除值周围的双引号。 S抱歉,老问题迟到了
猜你喜欢
  • 1970-01-01
  • 2021-09-23
  • 1970-01-01
  • 1970-01-01
  • 2017-01-02
  • 1970-01-01
  • 1970-01-01
  • 2011-06-23
  • 1970-01-01
相关资源
最近更新 更多