2013-10-01 2 views
1

У меня есть ~ 700 МБ операторов вставки для моего Oracle, но операторы были использованы для вставки данных в БД MySQL. Поэтому синтаксисВставить несколько значений в oracle DB

INSERT INTO TABLE 
     (EXCH_WH_KEY, EXCH_EFF_DATE) 
     VALUES 
    (1, '28-AUG-2008'), 
    (2, '28-AUG-2008'), 
    (3, '28-AUG-2008'); 

и так далее. Но поскольку это ~ 700 МБ операторов, я не могу обновить весь их синтаксис ». Какой самый быстрый способ получить данные в моей базе данных Oracle?

ответ

0

Вставьте данные в базу данных MySQL, а затем используйте mysqldump с флагом --compatible=oracle, чтобы экспортировать его в формате, совместимом с Oracle. Затем вставьте в базу данных Oracle как обычно.

Если это не работает (как указано в комментарии ниже), вы можете прибегнуть к конкатенации для чтения из базы данных MySQL и генерировать совместимы вставки заявления Oracle, например:

SELECT CONCAT('INSERT INTO mytable(EXCH_WH_KEY, EXCH_EFF_DATE) VALUES (', EXCH_WH_KEY, ', \'', EXCH_EFF_DATE, '\')') FROM mytable; 

Обратите внимание, что столбец String должен быть завернут в экранированные кавычки.

+0

Хорошо спасибо, я уже опасался, что это придет к этому ... Есть ли у вас предложение для MySQL DB без особых шагов настройки? – nico1510

+0

Стандартный MySQL легко устанавливается локально. –

+0

Другим вариантом было бы найти и заменить файл, чтобы преобразовать его в формат Oracle. Для этого вам, вероятно, понадобится такой инструмент, как sed, а не только текстовый редактор. –

0

Во время выполнения туздЫшпра добавить --extended-insert=FALSE вместе с --compatible=oracle сделать отдельные операторы вставок вместо одной полной вставки.

Смежные вопросы