【发布时间】:2022-08-14 17:55:47
【问题描述】:
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
源的标题和第一行。
所以,我不知道如何解决这个问题。我会非常感谢任何帮助。
-
600 万个 CSV 文件的大小是多少?超过 2GB(msAccess 表限制)?
-
@ALeXceL 它是 0.5 GB
-
FMT=Delimited(,)? -
@BZngr
FMT=Delimited(,)返回相同的错误。 1 行 .csv 我添加了源数据的截图 -
@ALeXceL,我已经在 Access 2GB 限制下构建了 9+ 百万行的 Access 表,接近 1GB。在三列中,OP 可以处理此操作。如果 OP 使用带有代码描述的查找表来仅用于两列表的类代码并避免重复文本,那就更好了。
标签: sql excel vba ms-access ado