Самый простой способ конвертировать базу данных ODBC в SQLite - PullRequest
0 голосов
/ 08 июня 2019

Мне нужно спасти некоторые важные данные из старого FileMaker Pro во что-то, что я мог бы легко использовать везде. SQLite выглядит хорошим выбором для этого. Но вопрос в том, как выполнить эту миграцию?

FileMaker Pro может предоставлять свои данные как ODBC. Что было бы лучшим вариантом для чтения всех данных из ODBC и создания эквивалента SQLite?

Существует ли какой-либо конкретный инструмент для этого или, возможно, библиотека или скрипт на каком-либо языке, который мог бы быстро выполнить эту задачу?

1 Ответ

1 голос
/ 08 июня 2019

Похоже, самый простой и быстрый способ - использовать python вместе с библиотекой pandas. Эта идея вдохновлена ​​ этим вопросом .

Общая идея состоит в том, чтобы загрузить данные из базы данных ODBC в набор pandas фреймов данных, а затем попросить pandas вывести данные в SQLite.

Вот полный код для тех, кого это может заинтересовать:

import pyodbc
import sqlite3
import pandas

database_name = input("Enter ODBC database name: ")

source_connection = pyodbc.connect('DSN=' + database_name)
source_cursor = source_connection.cursor()

target_connection = sqlite3.connect(database_name + '.db')

# Ensuring that only 'tables' taken into account, not 'system tables', not 'views'
for table in filter(lambda x: x.table_type == 'TABLE', source_cursor.tables()):
    table_name = table.table_name
    table = pandas.read_sql_query(f"SELECT * from [{table_name}]", source_connection)
    table.to_sql(table_name, target_connection, index_label='index')

source_cursor.close()
source_connection.close()

target_connection.close()
...