我应该在Access中创建一个数据库,稍后将其传输到Oracle。对于每年,我应该导入一个包含数百万行数据的csv文件,可以追溯到1985年。我相信Access无法保存所有这些数据,所以我想我会有一个主数据库参考其他数据库。
每年为每年创建数据库需要什么代码?
这是我到目前为止所做的:
DocLocate = InputBox("Input Document Location") & "\"
StartYear = InputBox("Input Start Year")
EndYear = InputBox("Input End Year")
i = StartYear
strPath = DocLocate
strTable = strFile
strFile = "mar31_wts_" & i & ".csv"
Do Until i > EndYear
strPathFile = strPath & strFile
DoCmd.TransferText acImportDelim, acSpreadsheetTypeText, strFile, strPathFile, blnHasFieldNames
i = i + 1
strFile = "mar31_wts_" & i & ".csv"
Loop
答案 0 :(得分:2)
有多种方法可以将csv数据导入Access数据库。使用DoCmd.TransferText
方法,您将导入到执行代码的应用程序的当前数据库中。
如果要导入另一个数据库而不是执行VBA代码的数据库,则必须创建另一个Application
对象并在其中打开目标数据库:
Dim app As Application
Dim strDBPath As String
' create the database
strDBPath = "<path_to_db>\db.accdb"
DAO.CreateDatabase(strDBPath, dbLangGeneral).Close
' open the database in a new Access Application
Set app = New Application
app.OpenCurrentDatabase strDBPath
' import the csv file into that database
app.DoCmd.TransferText acImportDelim, acSpreadsheetTypeText, strFile, strPathFile, blnHasFieldNames
' close the database and the Access application
app.Quit acQuitSaveNone
如果要使用导入规范,则必须存在于新创建的数据库中。在这种情况下,最好手动创建一个已包含所需内容的空模板数据库(例如规范),并在上面的代码中,而不是使用DAO.CreateDatabase
创建一个新的模板数据库,创建副本模板数据库。
如果您希望在主数据库中链接的各种新数据库中的所有导入表,您可以这样称呼:
DoCmd.TransferDatabase acLink, , strDBPath, acTable, strFile, strFile