Мне нужно импортировать большую таблицу SQL из базы данных Oracle в базу данных mySQL. Я «сбросил» таблицу Oracle, используя RazorSQL, так что теперь у меня есть большой (2,5 ГБ) файл .sql со множеством операторов INSERT
.
Этот файл слишком большой, и я хочу разделить его, чтобы импортировать его по частям. Какой бы умный способ разбить такой файл?
с использованием команды split
будет работать, за исключением того, что некоторые строковые значения содержат символы новой строки, так что существует высокий риск разделения split
на середину оператора.
a Perl, использующий регулярное выражение для разделения на "; \ n" (конец оператора), будет работать, но все еще существует удаленная возможность, что такая последовательность символов может быть найдена в данных.
Конечно, я всегда могу написать синтаксический анализатор для понимания цитирования строк. Интересно, а есть ли что-нибудь умнее?
Подобные вопросы были заданы. например:
Как разделить вывод из mysqldump на файлы меньшего размера?
Но единственным решением для разделения было предложение для некоторых программ Windows. Windows не вариант для меня. Я использую Unix, а именно Mac OS X.
Чтобы дать некоторую предысторию, я хочу сделать так, чтобы у меня возникла ошибка при импорте файла в mySQL. Локализация ошибки является болезненной хотя бы потому, что она занимает много времени, и потому что открытие таких больших текстовых файлов для редактирования не является тривиальным в лучшем случае с большинством текстовых редакторов. Некоторые из моих инструментов SQL даже не сообщают о местонахождении ошибки в файле, что настоятельно рекомендует дихотомический подход к обнулению ошибки путем деления числа раз. Автоматизация этого была бы полезна.
Спасибо за любую идею.