Динамическое создание Таблицы. Шеф задал задачку

iudey
Дата: 07.03.2007 21:57:51
Здравствуйте дорогие соотечественники. Задал мне шеф задачку. Скажите выполнима ли она?
Значит так на сервере приходит 1 раз в неделю 50 excel файлов и причём как они называются я заранее не знаю. Задание состоит из 2 частей. Пока поведую 1 часть. В Excel файлах я всё лишнее убрал, что касается второго задания. Эти 50 файлов выглядят примерно так
iudey
Дата: 07.03.2007 22:00:49
По этому номеру я из другого эксель файла(название его известно) могу узнать, как таблица называется. Выглядет так:
iudey
Дата: 07.03.2007 22:02:49
Имеется еще один Ecxel file, где описанно , какие колонки и какого типа в таблицах должно быть.Выглядет так:
iudey
Дата: 07.03.2007 22:15:36
Так вот, нужно читать подряд 50 файлов. Прочёл первый фаил , посмотрел в другом название таблицы, в третьем какие и сколько колонок(количесиво и название могут быть разные у всех таблиц), а затем создал таблицу. И так 50 раз.
1) Возможно ли создавать в процедуре PL/SQL таблицы с колонками динамическим путём? Я могу создать динамически таблицу если известно точное количество колонок:
declare
tablename char(20) :='TEST_EVGENI_DYN';
feld char(20) :='PUPSIK';
datentyp char(20) :='char(20)';
sglstring char(200);
begin
sglstring :='CREATE TABLE '||tablename||' ('||feld||' '||datentyp||')';
EXECUTE IMMEDIATE sglstring ;
end;
Но возможно ли это сделать, когда количество колонок разные
2) Как мне читать подрят эти 50 EXCEL files не зная их имени? И вообще как мне их читать( xls files) ?
Уверен, что наверное найдется здесь мудрый коллега, который подскажет....
Sleepy_PIP
Дата: 07.03.2007 22:24:31
iudey
Так вот, нужно читать подряд 50 файлов. Прочёл первый фаил , посмотрел в другом название таблицы, в третьем какие и сколько колонок(количесиво и название могут быть разные у всех таблиц), а затем создал таблицу. И так 50 раз.
1) Возможно ли создавать в процедуре PL/SQL таблицы с колонками динамическим путём? Я могу создать динамически таблицу если известно точное количество колонок:
declare
tablename char(20) :='TEST_EVGENI_DYN';
feld char(20) :='PUPSIK';
datentyp char(20) :='char(20)';
sglstring char(200);
begin
sglstring :='CREATE TABLE '||tablename||' ('||feld||' '||datentyp||')';
EXECUTE IMMEDIATE sglstring ;
end;
Но возможно ли это сделать, когда количество колонок разные
2) Как мне читать подрят эти 50 EXCEL files не зная их имени? И вообще как мне их читать( xls files) ?
Уверен, что наверное найдется здесь мудрый коллега, который подскажет....


не стоит все время создавать таблицы ИМХО - посмотри в сторону XML-я, ибо условия на критериии выборки у тебя просто отсудствуют соотв. ИМХО не понятно что ты будешь с ними потом делать. а XML - он почти резиновый :).


2. не знаешь имени - может знаешь каталог где они все лежат?. тогда остаестся вопрос связки.

Лучше все делать явой ИМХО. там все есть - и xls прочтешь хоть где, и все остальное сделаешь. можно на сервере, можно клиентом ...
iudey
Дата: 07.03.2007 22:34:49
Sleepy_PIP
iudey
Так вот, нужно читать подряд 50 файлов. Прочёл первый фаил , посмотрел в другом название таблицы, в третьем какие и сколько колонок(количесиво и название могут быть разные у всех таблиц), а затем создал таблицу. И так 50 раз.
1) Возможно ли создавать в процедуре PL/SQL таблицы с колонками динамическим путём? Я могу создать динамически таблицу если известно точное количество колонок:
declare
tablename char(20) :='TEST_EVGENI_DYN';
feld char(20) :='PUPSIK';
datentyp char(20) :='char(20)';
sglstring char(200);
begin
sglstring :='CREATE TABLE '||tablename||' ('||feld||' '||datentyp||')';
EXECUTE IMMEDIATE sglstring ;
end;
Но возможно ли это сделать, когда количество колонок разные
2) Как мне читать подрят эти 50 EXCEL files не зная их имени? И вообще как мне их читать( xls files) ?
Уверен, что наверное найдется здесь мудрый коллега, который подскажет....


не стоит все время создавать таблицы ИМХО - посмотри в сторону XML-я, ибо условия на критериии выборки у тебя просто отсудствуют соотв. ИМХО не понятно что ты будешь с ними потом делать. а XML - он почти резиновый :).


2. не знаешь имени - может знаешь каталог где они все лежат?. тогда остаестся вопрос связки.

Лучше все делать явой ИМХО. там все есть - и xls прочтешь хоть где, и все остальное сделаешь. можно на сервере, можно клиентом ...

1) Яву не нужно подключать. Нужно с PL/sql проблему решать. Я ему тоже сказал, давай в ручную создам таблицы. Он не в какую. Он говорит, что год назад всё это в ACCESSE сделал.
Так возможно это впринципи
Конечно каталог известен, где все файлы лежат.
Ответте на 2 вопроса. Можно ли динамически создавать таблицу в моём случае, считывая число колонок? Я подумал о простом подсчёте записей с count. И потом проверять
IF число записей =1 тогда знаем, что всего одна колонка и т.д.
2) подскажите технику чтения EXCEL files.
Sleepy_PIP
Дата: 07.03.2007 22:53:17
iudey
Sleepy_PIP
iudey
Так вот, нужно читать подряд 50 файлов. Прочёл первый фаил , посмотрел в другом название таблицы, в третьем какие и сколько колонок(количесиво и название могут быть разные у всех таблиц), а затем создал таблицу. И так 50 раз.
1) Возможно ли создавать в процедуре PL/SQL таблицы с колонками динамическим путём? Я могу создать динамически таблицу если известно точное количество колонок:
declare
tablename char(20) :='TEST_EVGENI_DYN';
feld char(20) :='PUPSIK';
datentyp char(20) :='char(20)';
sglstring char(200);
begin
sglstring :='CREATE TABLE '||tablename||' ('||feld||' '||datentyp||')';
EXECUTE IMMEDIATE sglstring ;
end;
Но возможно ли это сделать, когда количество колонок разные
2) Как мне читать подрят эти 50 EXCEL files не зная их имени? И вообще как мне их читать( xls files) ?
Уверен, что наверное найдется здесь мудрый коллега, который подскажет....


не стоит все время создавать таблицы ИМХО - посмотри в сторону XML-я, ибо условия на критериии выборки у тебя просто отсудствуют соотв. ИМХО не понятно что ты будешь с ними потом делать. а XML - он почти резиновый :).


2. не знаешь имени - может знаешь каталог где они все лежат?. тогда остаестся вопрос связки.

Лучше все делать явой ИМХО. там все есть - и xls прочтешь хоть где, и все остальное сделаешь. можно на сервере, можно клиентом ...

1) Яву не нужно подключать. Нужно с PL/sql проблему решать. Я ему тоже сказал, давай в ручную создам таблицы. Он не в какую. Он говорит, что год назад всё это в ACCESSE сделал.
Так возможно это впринципи
Конечно каталог известен, где все файлы лежат.
Ответте на 2 вопроса. Можно ли динамически создавать таблицу в моём случае, считывая число колонок? Я подумал о простом подсчёте записей с count. И потом проверять
IF число записей =1 тогда знаем, что всего одна колонка и т.д.
2) подскажите технику чтения EXCEL files.

технику чтения xls в PL/SQL - извиняйте. даже не пытался даже искать в просторах инета :).
потенциально - можно. как ф. открыть и разбираться с ним побайтово. если знаешь хорошо все вариации xls формата - надо только время :).
но не думаю что знаешь, и что оно у тебя есть (время).
Может тебе посмотреть в сторону cvs и Loader-a?
Просто я ярый противник создания табличек на лету и соотв. в не ограниченном колличестве.
Sleepy_PIP
Дата: 07.03.2007 22:56:42
а может еще через "одно место" - ОДБС и клиент на чем угодно, разбирающийся с этими xls. тока ради Бога - надо как-то продумать все-ж зачем все это надо.
Ибо просто сохранить - можно FAR-ом или NERO на DVD-к. если уж пихать в оракл да с переменной структурой - надо попытаться изначально (т.е. сначала) представить себе - а нафига оно вообще надо? и что с этим делать. все ИМХО конечно. а то счаз набегут и затопчат :) ....
iudey
Дата: 07.03.2007 22:58:08
технику чтения xls в PL/SQL - извиняйте. даже не пытался даже искать в просторах инета :).
потенциально - можно. как ф. открыть и разбираться с ним побайтово. если знаешь хорошо все вариации xls формата - надо только время :).
но не думаю что знаешь, и что оно у тебя есть (время).
Может тебе посмотреть в сторону cvs и Loader-a?
Просто я ярый противник создания табличек на лету и соотв. в не ограниченном колличестве.

Время вообще нет. 2 проекта виду, а тут еще это задание. Слушай, можно с тобой по skype перетереть. Я вижу ты спец...
мой ник aleichem
SergINI
Дата: 07.03.2007 22:58:33
Да, Access рулит! Ну так напишите на Access или VB обработку этих файлов в единую базу или XML, а затем уже и тащите в Oracle!