Модераторы: LSD
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вставка данных из .csv файла в таблицу, Как реализовать? 
:(
    Опции темы
CrazyDiamond
Дата 7.9.2006, 11:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 56
Регистрация: 21.11.2005
Где: Москва

Репутация: нет
Всего: нет



Вот есть в информиксе такой оператор - load
Например, load from $file delimiter ';'

А вот как вставить данные из файла с разделителями в таблицу в Оракле?

PM MAIL ICQ   Вверх
ZeeLax
Дата 7.9.2006, 11:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 4388
Регистрация: 20.8.2006
Где: Алма-Ата

Репутация: нет
Всего: 88



Методом прямой загрузки в обход SQL машины. Программка называется sqlldr.
Краткое описание тут


--------------------
Utility is when you have one telephone, luxury is when you have two, opulence is when you have three — and paradise is when you have none.
— Doug Larson
PM MAIL WWW ICQ Skype Jabber   Вверх
CrazyDiamond
Дата 11.9.2006, 11:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 56
Регистрация: 21.11.2005
Где: Москва

Репутация: нет
Всего: нет



Попробовал с помощью 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 машины" никак не осуществить?
PM MAIL ICQ   Вверх
ols
Дата 11.9.2006, 15:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 33
Регистрация: 24.8.2006
Где: Прага

Репутация: 1
Всего: 1



я обычно использую внешние таблицы. 
например: 
создать директорию
Код

CREATE OR REPLACE DIRECTORY EXT AS 'd:\oracle\...\ext';

положить туда файл
а потом 
Код

create table ext_table_name
(
c1 varchar2(4000),
c2 varchar2(4000),
c3 varchar2(4000),
c4 varchar2(4000),
c5 varchar2(4000)
) 
organization external 
 (
   default directory EXT
   access parameters
   (
    fields terminated by ";"
   )
   location('file_name')
  );


делаешь select из новой таблицы куда угодно... 
например: 
Код

create table TTT as select * from ext_table_name


Удачи
PM MAIL WWW   Вверх
ZeeLax
Дата 14.9.2006, 17:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 4388
Регистрация: 20.8.2006
Где: Алма-Ата

Репутация: нет
Всего: 88



Цитата(CrazyDiamond @  11.9.2006,  14:24 Найти цитируемый пост)
ORA-01116: ошибка при открытии файла 8 базы данных
ORA-01110: файл данных 8: '/usr/oracle/OraHome1/oradata/ADV/users01.dbf'
ORA-27092: skgfofi: размер файла превышает предельный для процесса размер

Это значит, что превышен максимально допустимый размер файла для процесса. Параметр ulimit ядра Linux. Следовательно, нужно, либо увеличить значение ulimit, либо разбить таблично пространство на несколько файлов данных.


--------------------
Utility is when you have one telephone, luxury is when you have two, opulence is when you have three — and paradise is when you have none.
— Doug Larson
PM MAIL WWW ICQ Skype Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Oracle"
Zloxa
LSD

Данный раздел предназначен для обсуждения проблем с Oracle Database, другие продукты Oracle здесь не обсуждаются. Просьба при создании темы, придерживаться следующих правил:

  • при создании темы давайте ей осмысленное название, описывающее суть проблемы
  • указывайте используемую версию базы, способ соединения и язык программирования
  • при ошибках обязательно приводите код ошибки и сообщение сервера
  • приводите код в котором возникла ошибка, по возможности дайте тестовый пример демонстрирующий ошибку
  • при вставке кода используйте соответсвующие теги: [code=sql] [/code] для подсветки SQL и PL/SQL кода, [code=java] [/code] - для Java, и т.д.

  • документация по Oracle: 9i, 10g, 11g
  • книги по Oracle можно поискать здесь
  • действия модераторов можно обсудить здесь

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Zloxa, LSD.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Oracle | Следующая тема »


 




[ Время генерации скрипта: 0.0436 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.