Я не мастер баз данных, но AFAIK в Python не имеет общего API, который бы делал из коробки то, что вы просите.Существует PEP 249 , который определяет API, который должен использоваться модулями, обращающимися к БД, и что AFAIK используется по крайней мере модулями Python MySQL и Postgre ( здесь и здесь ) и это, возможно, могло бы послужить отправной точкой.
Дорога, по которой я попытался бы пойти сам, - однако, была бы другой:
- Импортируйте CVS ntoMySQL (это просто потому, что MySQL - это тот, который я знаю лучше всего, и в сети есть тонны материала, как, например, этот очень простой рецепт , но вы можете выполнить ту же процедуру, начиная с другойбаза данных).
- Создание дампа MySQL .
- Обработка файла дампа MySQL для его изменения в соответствии с синтаксисом SQLite (и других).
Скрипты для обработки файла дампа могут быть очень компактными, хотя они могут быть сложными, если вы используете регулярное выражение для анализа строк.Вот пример скрипта MySQL → SQLite, который я просто вставил с этой страницы :
#!/bin/sh
mysqldump --compact --compatible=ansi --default-character-set=binary mydbname |
grep -v ' KEY "' |
grep -v ' UNIQUE KEY "' |
perl -e 'local $/;$_=<>;s/,\n\)/\n\)/gs;print "begin;\n";print;print "commit;\n"' |
perl -pe '
if (/^(INSERT.+?)\(/) {
$a=$1;
s/\\'\''/'\'\''/g;
s/\\n/\n/g;
s/\),\(/\);\n$a\(/g;
}
' |
sqlite3 output.db
Вы можете написать свой скрипт на python (в этом случае вы должны взглянуть на re.compile для повышения производительности).
Обоснованием для моего выбора будет:
- Я получаю тяжелый [импорт и, следовательно, данныепроверки согласованности + генерация начального файла SQL], выполненные для меня mysql
- У меня должна быть установлена только одна база данных.
- У меня есть полный контроль над тем, что происходит, ивозможность тонкой настройки процесса.
- Я могу структурировать свой сценарий таким образом, чтобы его было очень легко расширить для других баз данных (в основном я бы структурировал его как анализатор, который распознает отдельные поля + aнабор грамматик - по одной для каждой базы данных - которые я могу выбрать с помощью параметра командной строки)
- Документов о различиях между разновидностями SQL гораздо больше, чем об импорте / экспорте одной БДбиблиотеки ort.
РЕДАКТИРОВАТЬ: шаблонный подход
Если по какой-либо причине вы не чувствуете себя достаточно уверенно, чтобы написать SQL самостоятельно, вы можетеиспользовать своего рода скрипт на основе шаблона.Вот как я бы это сделал:
- Импортируйте и сгенерируйте дамп таблицы во всех 4 БД, которые вы планируете использовать.
- Для каждой БД сохраните начальную частьdump (с объявлением схемы и всем остальным) и одна инструкция вставки.
- Напишите скрипт на python, который - для каждого экспорта БД - будет выводить «заголовок» дампа плюс ту же «сохраненную строку»в котором вы будете программно заменять значения для каждой строки в вашем файле CVS.
Очевидным недостатком этого подхода является то, что ваш «шаблон» будет работать только для одной таблицы.Самое сильное в этом то, что написание такого скрипта было бы чрезвычайно легко и быстро.
HTH хотя бы немного!