我對 Microsoft Access 資料庫(表)非常陌生,并試圖將 Access 表轉換為我可以在 Python 中用作 pandas 資料框的格式。
情況就是這樣,資料庫大約有 500 萬行,每次我嘗試匯出到 excel 或 XML 時,它只能轉換前 100 萬行。我想知道兩件事:
- 是否存在我可以匯出所有行而不受行限制的格式?
- 如果上述不可行,那么有沒有一種方法可以將每 100 萬行的 Access 資料庫分成單獨的檔案,我可以將它們匯出到不同的 excel/xml 檔案(復制到剪貼板會超過這里的限制)?
歡迎任何想法!
[更新]:匯出到 txt 檔案對我有用,可以做 1000 萬條記錄。避免產生轉換錯誤的方法是使用逗號“,”作為分隔符。謝謝大家!
uj5u.com熱心網友回復:
好吧,在訪問中,您應該能夠將該表匯出到 csv,而不是嘗試匯出到 excel。我不相信 .csv(文本)匯出有限制。
從訪問,ctrl-g(跳轉到命令列/除錯視窗),然后輸入:
docmd.TransferText acExportDelim,,"LContactHistory","c:\test\mybig.csv", True
所以,上面應該匯出檔案。但是,當您執行上述操作時,Access 通常會“凍結” - 但值得一試。(對于大約 100 萬行,以上似乎還可以)。
下一個?
逐行讀取表格,輸出到文本檔案。對于真正的大檔案,這往往是最好的。獎勵點是 VBA 中用于檔案輸出操作的非常古老的遺留代碼可以追溯到 DOS 時代——它們是 STUPID FAST 高性能。
回圈的另一個優點是,您可以為訪問(和 UI 訊息泵)提供一大口空氣,可以這么說 - 這就是無論如何都會凍結的原因。
因此,在本機訪問 VBA 代碼中執行此操作 - 效果最好。
此代碼將起作用:
Sub OutPutBig()
Dim strOutFile As String
Dim intOutFile As Integer
Dim strMyTable As String
Dim rstData As DAO.Recordset
Dim Counter As Long
Dim CounterUp As Long ' value to update progress
CounterUp = 20000 ' update display every 20,000
Counter = 0
strMyTable = "LContactHistory"
strOutFile = "c:\test\big.csv"
intOutFile = FreeFile
Open strOutFile For Output As #intOutFile
Set rstData = CurrentDb.OpenRecordset(strMyTable)
Dim sOutline As String
' output first row of field names
sOutline = ""
Dim fField As DAO.Field
For Each fField In rstData.Fields
If sOutline <> "" Then sOutline = sOutline & ","
sOutline = sOutline & qu(fField.Name)
Next
Print #intOutFile, sOutline
Do While rstData.EOF = False
sOutline = ""
For Each fField In rstData.Fields
If sOutline <> "" Then sOutline = sOutline & ","
sOutline = sOutline & qu(fField.Value)
Next
Print #intOutFile, sOutline
rstData.MoveNext
Counter = Counter 1
If Counter Mod CounterUp = 0 Then
Debug.Print Counter
DoEvents
End If
Loop
Close (intOutFile)
rstData.Close
Beep
Debug.Print "done export - " & Counter
End Sub
Public Function qu(s As Variant) As String
If IsNull(s) Then
s = ""
End If
qu = Chr(34) & s & Chr(34)
End Function
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/505130.html
上一篇:訪問無法識別SQL布林值
下一篇:SQL-如何計算有條件的重復項
