импорт с помощью sql loader

Работа VB и СУБД (Access, MSSQL, MySQL, Oracle и пр.)
Правила форума
При создании новой темы не забывайте указывать используемую СУБД.
Anta
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 106
Зарегистрирован: 19.08.2012 (Вс) 22:00

импорт с помощью sql loader

Сообщение Anta » 21.03.2013 (Чт) 4:23

Здравствуйте, имеется 10 файлов с данными в фомате .csv, созданы 10 таблиц в oracle.
Необходимо импортировать данные из файлов в таблицы (одному файлу соответсвует одна таблица). Для импортирования данных использовались внешние таблицы, но тестирование показало- не всегда получалось импортировать данные, не во все схемы. Причина не известна, ошибки в скрипте не было, так как были схемы, куда все данные ипортировались без проблем. На данный момент хочу воспользоваться sql loader для импортирования данных.
Вопрос: можно ли в одном и том же контрольном файле (ctl) sql loader указать, что нужно прочесть 10 файлов и занести данные в 10 таблиц. Или нужно создать 10 контрольных файлов? Если да, то каким образом? Если нет, то возможно у кого-то есть идеи, каким образом можно импортировать сразу 10 файлов (один по одному не подходит, так как имеется 160 схем, куда нужно эти данные импортировать). Спасибо.

HandKot
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 283
Зарегистрирован: 28.06.2006 (Ср) 13:34
Откуда: Sergiev Posad

Re: импорт с помощью sql loader

Сообщение HandKot » 21.03.2013 (Чт) 7:08

когда я использовал sqlldr, то мне очень помогла вот эта статья SQL*LOADER РУКОВОДСТВО ПОЛЬЗОВАТЕЛЯ
там как раз есть такие пункты
Указание нескольких файлов данных
Указание имен таблиц


в общем, думаю, можно поиграться
I Have Nine Lives You Have One Only
THINK!

Anta
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 106
Зарегистрирован: 19.08.2012 (Вс) 22:00

Re: импорт с помощью sql loader

Сообщение Anta » 22.03.2013 (Пт) 3:39

HandKot писал(а):в общем, думаю, можно поиграться

спасибо большое, разбираюсь... а вам приходилось указывать полный путь к файлам с данными или контрол файлу? таблицы в каждой схеме одинаковы, названия файлов данных идентичны, но внутри данные как-бы разные (160 городов, в каждых десяти файлах информация по одному городу) поэтому для каждого города свой папка, где хранятся 10 файлов. Спасибо.

HandKot
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 283
Зарегистрирован: 28.06.2006 (Ср) 13:34
Откуда: Sergiev Posad

Re: импорт с помощью sql loader

Сообщение HandKot » 22.03.2013 (Пт) 7:14

как раз всегда и указываю полный путь, у меня файлы генерятся автоматом и потом я их гружу в оракл
вот часть командной строки sql loader'a

Код: Выделить всё
userid=ТУТА пользователь и видать схема, control=тута путь к MyCtl.ctl, log=тута путь к MyLog.txt, bad=тута путь к MyBad.txt, data=тута путь к файлу данных

параметры для LOG и BAD сделал для проверки, но не пользуюсь ими редко (считать никогда)

внутри файла ctl для файла данных прописано так
Код: Выделить всё
LOAD DATA
INFILE *
APPEND
INTO TABLE


ЗЫЖ думаю Вам действительно лучше сделать для кажлой таблицы свой ctl-файл и хранить его в своей папке с данными
I Have Nine Lives You Have One Only
THINK!

Anta
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 106
Зарегистрирован: 19.08.2012 (Вс) 22:00

Re: импорт с помощью sql loader

Сообщение Anta » 23.03.2013 (Сб) 0:11

Код: Выделить всё
userid=ТУТА пользователь и видать схема, control=тута путь к MyCtl.ctl, log=тута путь к MyLog.txt, bad=тута путь к MyBad.txt, data=тута путь к файлу данных
спасибо! то есть можно полный путь прописать, в примеры руководства было указано сразу имя файла...

Anta
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 106
Зарегистрирован: 19.08.2012 (Вс) 22:00

Re: импорт с помощью sql loader

Сообщение Anta » 18.04.2013 (Чт) 2:11

Подскажите, некоторые файлы не загружаются в таблицу, так как столбцы содержат числовые данные: 23.6, если число целое, то проходят, если с запятой, то фообще даные в таблицу не загружаются, пыталаст указать decimal, использовать функцию to_number в ctl файле, но результата позитивного нет, кто-то сталкивался с такой проблемой (исходный файд с данными- типа .csv). Спасибо.

HandKot
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 283
Зарегистрирован: 28.06.2006 (Ср) 13:34
Откуда: Sergiev Posad

Re: импорт с помощью sql loader

Сообщение HandKot » 18.04.2013 (Чт) 7:43

если в csv файле десятичное число имеет разделителем символ "запятая", то оно sql loaderом насколько я понимаю, воспринимается как два поля
думаю, есть следующие пути решения
1. делать разделитель целой и доробной части как символ "точка"
2. ограничить это число другими разделителями. к примеру "двойными кавычками"
3. сделать файл позиционным (фиксированной ширины)
4. возможно есть еще способы
I Have Nine Lives You Have One Only
THINK!

Anta
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 106
Зарегистрирован: 19.08.2012 (Вс) 22:00

Re: импорт с помощью sql loader

Сообщение Anta » 25.04.2013 (Чт) 16:37

HandKot писал(а):если в csv файле десятичное число имеет разделителем символ "запятая", то оно sql loaderом насколько я понимаю, воспринимается как два поля
думаю, есть следующие пути решения
1. делать разделитель целой и доробной части как символ "точка"
2. ограничить это число другими разделителями. к примеру "двойными кавычками"
3. сделать файл позиционным (фиксированной ширины)
4. возможно есть еще способы


1. Извините, у меня опечатка, разделителем является точка
2. попробую эту идею
Большое спасибо


Вернуться в Базы данных

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 111

    TopList