Как импортировать данные Access в SQLite с ODBC в существующую таблицу, а не в новую? - PullRequest
0 голосов
/ 25 сентября 2018

Я хочу импортировать данные (не структуру) из Access в SQLite через ODBC, и это работает, но есть один момент, который раздражает:

Я не хочу создавать новую таблицу автоматически - яхочу импортировать данные в мою существующую таблицу, и я получаю следующую ошибку:

ODBC--call failed
table "x" already exists(1)(#1)

Я хочу найти способ избежать создания новой таблицы в sqlite.

Я также пробовал другое решениедля импорта моих данных из Access в SQLite через CSV.Тем не менее, моя кодировка - utf-8, но она показывает данные в виде вопросительных знаков!

Ответы [ 2 ]

0 голосов
/ 05 мая 2019

Существует другой способ экспорта записей таблицы Access в существующую таблицу ODBC с подключением Adobe, если таблицы с обеих сторон имеют одинаковое имя и одинаковую структуру и если структура таблицы хранится в системной таблице.

    Dim Str_Sql As String
    Dim Conn As New ADODB.Connection
    Dim myDSN As String
    Dim UserName As String
    Dim Password As String
    Dim Rs_Tabl As DAO.Recordset
    Dim Rs_TablStru As DAO.Recordset

    myDSN = ...
    UserName = ...
    Password = ...

    Conn.Open "dsn=" & myDSN & ";uid=" & UserName & ";pwd=" & Password

    Set cmd = CreateObject("ADODB.Command")
    Set cmd.ActiveConnection = Conn
    Set Rs_Tabl = CurrentDb.OpenRecordset(TablName)
    Set Rs_TablStru = CurrentDb.OpenRecordset("select * from Systable where TableName=TableName order by ColumnOrder")

    Str_Sql = "truncate table TableName"

    Conn.Execute (Str_Sql)

    Str_Sql = "insert into TableName values ('"

    Do Until Rs_Tabl.EOF

        Str_Sql = "insert into TableName values ('"

        Rs_TablStru.MoveFirst

        Do Until Rs_TablStru.EOF

            Str_Sql = Str_Sql & Rs_Tabl.Fields(Rs_TablStru.Fields("AAA")) & "','"

            Rs_TablStru.MoveNext
        Loop

        Str_Sql = Mid(Str_Sql, 1, Len(Str_Sql) - 2) & ")"

        Debug.Print Str_Sql
        Conn.Execute (Str_Sql)

        Rs_Tabl.MoveNext
    Loop

    Rs_Tabl.Close
    Rs_TablStru.Close
    Set Rs_Tabl = Nothing
    Set Rs_TablStru = Nothing
    Conn.Close

* AAA: столбец из системной таблицы, в котором хранятся имена столбцов из всех таблиц.

0 голосов
/ 25 сентября 2018

Существует множество способов перемещения данных с помощью Access.

При добавлении данных в таблицы ODBC я рекомендую следующие шаги:

  1. Создание связанной таблицы с таблицей ODBCвы хотите импортировать в Access, используя Импорт -> база данных ODBC
  2. . Используйте запрос на добавление, чтобы переместить данные из локальной таблицы в таблицу ODBC
  3. (необязательно). Удалить связанную таблицу.

Кроме того, Access может напрямую выполнять запросы на добавление к источникам данных ODBC без создания связанных таблиц, но для этого требуются некоторые знания SQL.Синтаксис следующий:

INSERT INTO [ODBC;MyDSNOrConnectionString].[MyRemoteTable] (Field1, Field2, FieldN)
SELECT Field1, Field2, FieldN
FROM MyLocalTable
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...