簡體   English   中英

SELECT * 從 csv 進入訪問; 從 Excel 運行 VBA ADO

[英]SELECT * INTO Access FROM csv ; running VBA ADO from Excel

upd.:這是最終解決問題的語法: 'createSQL = "SELECT * INTO newlyСreatedTableName FROM [fileName.csv] IN 'folderPath' [""Text;HDR=YES;FMT=Delimited""]"

在數據傳輸上苦苦掙扎。 我有一個 600 萬行的.csv 並嘗試將其導入到 Excel 中的 Access DB 運行代碼。 我有一個簡單的代碼。

Function getAccCN(ByVal dbFullPath As String) As Object
    Set getAccCN = CreateObject("ADODB.Connection")
    getAccCN.connectionString="Provider=Microsoft.ACE.OLEDB.16.0;Data Source=" & dbFullPath
End Function

Function createSQL() As String
    createSQL = "Select * INTO [" & _ 
                fileName & "] FROM [Data source = " & _
                repFile.ParentFolder.Path & _ 
                "\; Extended Properties=""Text;HDR=Yes;FMT=Delimited""]." & _ 
                repFile.Name ' repFile is a *.csv as "Scripting.FileSystemObject"

    Debug.Print createSQL ' returns following:
     ' Select * INTO [Classification] FROM [Data source = \\av-fs01.av.local\profiles$\...\Project IQVIA\; Extended Properties="Text;HDR=Yes;FMT=Delimited"].Classification.csv
     ' *.accdb and the table name and  *.csv have the same base name - "Classification"
End Function

Function uploadCSV() as Boolean
Dim CN as Object
    Set CN = getAccCN(repFile.ParentFolder.Path & "\" & baseFileName & ".accdb")
    CN.Open
    CN.Execute createSQL() ' this creates Error
    Exit Function
ErrHandler:
    Debug.Print Err.Number ' = -2147467259  "Wrong argument."
       'CN.ERROR - Arguments are of the wrong type, out of range, or conflict with each other.
End Function

源的標題和第一行。

在此處輸入圖像描述

所以,我不知道如何解決這個問題。 我將非常感謝任何幫助。

由於問題是一次要導入的行數,我建議使用 Power Query 導入並在其中執行所需的工作(Power Query 就是為此而設計的)。 之后,將這 600 萬行分成 6 個查詢,每個查詢可以導入到 Excel 或作為導出到另一個應用程序的基礎。 我在這里做了一個測試,它成功了:我創建了一個包含 6M 行的 CSV 文件,其中包含文本“這是一個 6M 行文件,這是行 (lngPtr)”。 導入 Power Query 后,我將單列拆分為 4 個其他列,最后應用 Table.Split,根據下面的 M 腳本將表分成 6 個(每個 1M 行)(要修改的示例):

let
    Font = Csv.Document(File.Contents("C:\temp\6MRows.CSV"),[Delimiter=",", Columns=1, Encoding=1252]),
    #"Split Table" =Table.Split(Font,1000000)
in
    #"Split Table"

拆分CSV文件后,PQ中會出現6個“表”。 然后將它們添加到 6 個新查詢中。 在不到 20 分鍾的時間內,CSV 進入 PQ(Excel365、Win10Pro、I7/16Gb)

請試試這個和反饋。

Sub csv_Import()
Dim wsheet As Worksheet, file_mrf As String
Set wsheet = ActiveWorkbook.Sheets("Single")
file_mrf = Application.GetOpenFilename("Text Files (*.csv),*.csv", , "Provide Text or CSV File:")
With wsheet.QueryTables.Add(Connection:="TEXT;" & file_mrf, Destination:=wsheet.Range("B2"))
  .TextFileParseType = xlDelimited
  .TextFileCommaDelimiter = True
  .Refresh
End With
End Sub

這是解決問題的語法:

'createSQL = _
     "SELECT * INTO newlyСreatedTableName" & _ 
     " FROM [fileName.csv] IN 'folderPath' [""Text;HDR=YES;FMT=Delimited""]"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM