Хорошо, нам нужно несколько вещей.
Для начала нам нужно из Access:
Просмотреть файл CSV - выберите
Импортировать файл CSV в таблицу .
Теперь экспортируем в SQLite.
Но здесь мы пропустили несколько вопросов.
Во-первых, база данных SQLite - это та же база данных и в том же месте. все время?
Установили ли вы драйвер SQLite ODB C и смогли ли вы ссылаться на SQLite из Access?
Итак, нам нужно разобраться со всем вышеперечисленным , Особенно связь с SQLite.
И не ясно, планируете ли вы / хотите создать новую таблицу для каждого импорта CSV, или вы собираетесь очистить таблицу и заново заполнить?
Давайте предположим следующее:
У вас есть связанная таблица с SQLite, работающая из Access.
Вы можете щелкнуть эту связанную таблицу в Access, и вы можете просматривать / просматривать и даже редактировать данные из Access, но базу данных и таблица, конечно, является связанной таблицей с SQLite.
Если все вышеперечисленное работает? И ВСЕ из вышеперечисленного пока принимает нулевой код. Таким образом, вам «нужно», чтобы приведенная выше часть работала.
И мы предполагаем, что каждый импорт CSV должен создавать новую таблицу в базе данных SQLite?
Тогда код будет выглядеть следующим образом:
Вставьте этот саб в стандартный модуль кода доступа.
Сохраните его, а затем, поместив курсор в любом месте кода, нажмите f5 для запуска.
Sub CsvImportToSQL()
Dim strCsvFile As String
Dim f As Object
Set f = Application.FileDialog(3)
f.Filters.Clear
f.Filters.Add "Csv file", "*.csv"
If f.Show = False Then
' no file selected - quite
Exit Sub
End If
Dim strFromTable As String
strFromTable = f.SelectedItems(1)
Dim strTable As String
' get only name of file without extension for Access table name
strTable = Mid(strFromTable, InStrRev(strFromTable, "\") + 1)
strTable = Left(strTable, InStr(strTable, ".") - 1)
strTable = InputBox("Select table = " & strFromTable, "Inport to Access table", strTable)
If strTable = "" Then
' user hit cancel - exit
Exit Sub
End If
' transfer the table into access
DoCmd.TransferText acImportDelim, , strTable, strFromTable, True
' ok, now ask for table name to export to in SQLite
Dim strSQLiteTable As String
strSQLiteTable = strTable
strSQLiteTable = InputBox("Table name to export for SQLite", "SQL lite table name", strSQLiteTable)
If strSQLiteTable = "" Then
' user cancel - don't transfer - exit
Exit Sub
End If
' now transfer table to SQL site
Dim strCon As String
strCon = CurrentDb.TableDefs("Hotels").Connect
' (replace above Hotels with a KNOWN WORKING LINKED table to SQLite)
DoCmd.TransferDatabase acExport, "ODBC Database", strCon, acTable, strTable, strSQLiteTable
MsgBox "table exported to SQLITE"
End Sub