| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Oracle > Вставка данных из .csv файла в таблицу |
| Автор: CrazyDiamond 7.9.2006, 11:44 |
| Вот есть в информиксе такой оператор - load Например, load from $file delimiter ';' А вот как вставить данные из файла с разделителями в таблицу в Оракле? |
| Автор: ZeeLax 7.9.2006, 11:53 |
| Методом прямой загрузки в обход SQL машины. Программка называется sqlldr. Краткое описание http://www.firststeps.ru/sql/oracle/r.php?135 |
| Автор: CrazyDiamond 11.9.2006, 11:24 |
| Попробовал с помощью sqlldr. --------------------------------------------------------------------------------------------------------- sqlldr user/password control=/путь/load.ctl log=/путь/load.log bad=/путь/load.bad SQL*Loader: Release 9.2.0.6.0 - Production on Пнд Сен 11 12:12:25 2006 Copyright © 1982, 2002, Oracle Corporation. All rights reserved. Достигнута точка фиксации - счетчик логич. записей 7 --------------------------------------------------------------------------------------------------------- Вот, что пишется в лог: SQL*Loader: Release 9.2.0.6.0 - Production on Пнд Сен 11 12:12:25 2006 Copyright © 1982, 2002, Oracle Corporation. All rights reserved. Управляющий файл: /путь/load.ctl Файл данных: /путь/load.dat Файл плохих записей: /путь/load.bad Файл удаленных записей: ничего не задано (Разрешить удалять все записи) Количество записей для загрузки: ALL Количество записей для пропуска: 0 Допускается ошибок: 50 Массив привязки:64 строк, макс. из 256000 байт Продолжение: ничего не задано Использован маршрут: Условный Таблица GREG_TEST1, загружен из каждой логической записи. Режим вставки действует для этой таблицы: APPEND Действует опция TRAILING NULLCOLS Имя столбца Позиция Дл. Огр. Вкл Тип данных ------------------------------ ---------- ----- ---- ---- --------------------- SZONE1 FIRST * ; O(") CHARACTER SZKBEZ1 NEXT * ; O(") CHARACTER Запись 1: Забракована - Ошибка в таблице GREG_TEST1. ORA-01116: ошибка при открытии файла 8 базы данных ORA-01110: файл данных 8: '/usr/oracle/OraHome1/oradata/ADV/users01.dbf' ORA-27092: skgfofi: размер файла превышает предельный для процесса размер Additional information: 262143 Additional information: 284161 ...тоже самое с остальными записями. Таблица GREG_TEST1: 0 Строки успешно загружено. 7 Строки не загружены из-за ошибки в данных. 0 Строки не загружены из-за сбоев во всех фразах WHEN. 0 Строки не загружены из-за того, что все поля были пусты. Для массива привязки отведено: 33024 байт(64 строк) Байтов буфера чтения: 1048576 Всего пропущено логических записей: 0 Всего прочитано логических записей: 7 Всего забраковано логических записей: 7 Всего удалено логических записей: 0 Прогон начался в Пнд Сен 11 12:12:25 2006 Прогон кончился в Пнд Сен 11 12:12:25 2006 Общее время: 00:00:00.42 Процессорное время: 00:00:00.00 --------------------------------------------------------------------------------------------------------- /usr/oracle/OraHome1/oradata/ADV/users01.dbf занимает 1,16 Гб. Отсюда вопрос. Этот файл БД действительно необходим для загрузки данных в мою табличку? Как выделить процессу sqlldr возможность использовать такой файлище? Без такого прямого использованяи файла БД загрузку "в обход SQL машины" никак не осуществить? |
| Автор: ols 11.9.2006, 15:48 | ||||||
| я обычно использую внешние таблицы. например: создать директорию
положить туда файл а потом
делаешь select из новой таблицы куда угодно... например:
Удачи |