2017-02-21 14 views
2

Я должен создать базу данных в Access, которая позже будет передана Oracle. За каждый год я должен импортировать файл csv, содержащий миллионы строк данных, начиная с 1985 года. Я считаю, что Access не может хранить все эти данные, поэтому я думал, что у меня будет ссылка на базовую базу данных других баз данных.Импортировать файлы csv в новую базу данных каждый

Какой код мне нужен для создания базы данных за каждый год?

Это то, что я до сих пор:

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 

ответ

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 
+0

Каков наилучший способ итерации, так что каждый год создает новую базу данных. Я сделал: «Do Until i> EndYear» –

+0

И где лучше всего разместить линию ссылок? –

+0

Нужно быть после того, как данные были импортированы, вероятно, будет лучше всего в конце, после 'app.Quit' – Leviathan

Смежные вопросы