gre*_*les 6 powershell ms-access export-to-csv
I'm exporting data from Access tables to CSV files using powershell on a Windows 2012 R2 Server. I'd like to do this without modifying the Access database schema and without writing any VBA code in the access database.
The powershell script boils down to something like this:
$Table = 'tblUsers'
$Filepath = 'C:\tblUsers.csv'
$Acc = New-Object -Com Access.Application
$Acc.OpenCurrentDataBase($DBFilePath)
$Acc.DoCmd.Transfertext(2, [Type]::Missing, $Table, $Filepath, 1)
Run Code Online (Sandbox Code Playgroud)
One of the tables has a column with a Number field where the Field Size is Double, Format is Percent, and Decimal Places are set to 2. The field contains values like 100%, 50%, and 87.5%. When I run this command the output in the CSV for a 100% value is ,1.00, while the output for 87.5% is ,0.87,. It seems that something in the process is dropping significant digits of precision for these columns.
Is there a way in the script to ensure I get all the significant digits of every column in the database? Are there other kinds of columns to be worried about?
If it is at all possible, I want a new answer instead of these 2. These 2 answers have significant drawbacks.
此代码应导出结果,而不对 Access 表或计算机设置进行任何修改。
1)它使用Microsoft.Jet.OLEDB.4.0 driver
2) 唯一的限制是它必须通过 运行PowerShell x86,由于这个限制。或者,您可以安装 64 位驱动程序(帖子中的链接)。
该访问表 ( tblFruit) 有 3 个字段:
$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()
Run Code Online (Sandbox Code Playgroud)
输出:
"ID","Fruit","Percent"
"1","Apple","0.0142"
"2","Orange","0.3412"
"3","Banana","0.8715"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
153 次 |
| 最近记录: |