Добрался до компа... Итак, если нужен
самый быстрый способ вставки содержимого ODS в SQLITE (даже из открытого в LO в открытую чем-то SQLITE, и даже по сети, и даже с облачного хранилища), то
по прежнему Python - рулит.
Скорость: Считывает из ODS, полностью удаляет таблицу и записывает обратно 10000 х 10 (текст/числа) ровно за 5 секунд, и это без транзакций, PRAGMA и прочих оптимизаций, код - 7 коротких строк.
Питон настолько простой язык, что воспринимается как естественная речь. Вот 100% рабочий код:
import pandas, sqlite3
df = pandas.read_excel('D:/base.ods')
con = sqlite3.connect('D:/base.sqlite')
cur = con.cursor()
cur.executescript('delete from TABL1') # empty table or del some old rows
df.to_sql('TABL1', con, index=False)
con.close()
Код помещаем в текстовый файл с раширением .py и запускаем. ВАЖНО: Если имена файлов русские или в тексте py кириллица в комментах, именах переменных (так можно и иногда и нужно для англобояк) - то файл .py д.б. в кодировке
utf-8В чем этот py-файл запустится? Есть 2 варианта (наверняка пригодятся оба):
1) можно заранее "починить"
слегка сломанный разрабами встроенный в LO python:
- скачать внутрь LO, там где лежит python.exe вот этот скрипт
https://bootstrap.pypa.io/get-pip.py и запустить его
- набрать в консоли
pip install pandas odfpy2) можно установить
обычный python c офсайта
www.python.org - и лучше той же версии/разрядности, например 3.8.4, что и python.exe из LO - и если чего-то в LO-питоне не хватает - можно просто скопировать файл/папку из обычного питона - в вылеченный LO-шный
Способов запуска py-скрипта из Basic скрипта много, все примеры есть на Форуме
а) script.invoke() для встроенного питона
б) shell('start *.py', ...)
в) shell('*.bat', ...) ' а тот уже дергает py
г) oSvc.execute("C:\PortableApps\LibreOfficePortable\App\libreoffice\program\python.exe", "load_statTXT.py", 0)