Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Экспорт в файл средствами SQL [D7, Firebird 2.0]


Страницы:   1 2

Megabyte ©   (2007-01-05 12:41:00) 

Не подскажите, возможно ли результаты запроса(таблицы, процедуры) экспортировать в файлы(различных форматов), только не руками, а средствами SQL?
Если да, то подскажите, где прочитать про это или подскажите примерный код(аля " select * from table into to 'otchet.xls' ")?
Если да, то где об этом почитать?


sniknik   (2007-01-06 00:55:00) [1]

> А как jet состыкуется с FB?
это спрашивай автора [18] поста, это он приводит запросы из jet как ответ в ветке с Firebird.

или это "прямой" вопрос?
тогда легко. из коннекта к access можно аналогично приведенным можно сделать запрос с указанием isam-а odbc и в нем указывая dsn настроенный на Firebird.
только это не ответ на основной вопрос ветки, там то как раз нужно наоборот, чтобы Firebird "вязался" с другими движками/или имел встроенный экспорт в разные форматы (чего как было сказано нет).


try   (2007-01-05 23:27:00) [2]


> sniknik ©   (05.01.07 22:36) [20]
> только если используется jet, его синтаксис.


А как jet состыкуется с FB?


sniknik   (2007-01-05 22:36:00) [3]

> Т.е. у тебя получается???
только если используется jet, его синтаксис.

у парня просто "легкая" дезориентация в пространстве форума... ;о))


try   (2007-01-05 21:57:00) [4]


> rar ©   (05.01.07 21:54) [18]
> можно используя ADOConnection


Т.е. у тебя получается???


rar   (2007-01-05 21:54:00) [5]

можно используя ADOConnection

ADOConnection1.Execute ('SELECT * INTO [Customer.htm] IN "' +
   ExtractFilePath (Application.ExeName) + '" "HTML Export;" FROM CUSTOMER');

ADOConnection1.Execute ('SELECT * INTO Customer IN "' +
   ExtractFilePath (Application.ExeName) + 'dbdemos.xls" "Excel 8.0;" FROM CUSTOMER');


try   (2007-01-05 21:26:00) [6]


> 4. а чем трудно это запихнуть в процедуру на сервере


Разве DDL команды выполнимы из процедур на сервере???


Carmen   (2007-01-05 21:06:00) [7]


> > 2. зачем делать экспорт когда незнаеш какие поля надо
> экспортировать
> Невнимательность твоя, однако. Я показал запрос выгрузки
> в эксель, который хотел автор.

такой файл можна без проблем открыть в екселе и все будет по колонках.

а последнее изречение правильное, у каждого свои задачи.


Desdechado   (2007-01-05 20:40:00) [8]

Carmen ©   (05.01.07 20:13) [14]
> 1. то что на сервере проблем не вижу
Ну-ну. Сидят 50 пользователей и каждый дружно гадит на сервер в какие-то файлы. Как он их оттуда забирать будет? Как он отличит свои от чужих, если эти юзеры побывали в одинаковых режимах, но с разными настройками. Экспорт явно для каких-нибудь отчетов нужен...

> 2. зачем делать экспорт когда незнаеш какие поля надо экспортировать
Невнимательность твоя, однако. Я показал запрос выгрузки в эксель, который хотел автор.

> 3. такая вигрузка работает для любых данных, в том числе и числовых
Числовых в текстовом формате (я не зря сказал о CHAR). И прочих тоже только в текстовом формате. Можно и в нетекстовом, но тогда это будет бинарник, который ничем нормально (без вывертов) не прочитаешь.

> 4. а чем трудно это запихнуть в процедуру на сервере или на клинте....
Еще одна глупость. Постоянно создавать и убивать таблицы очень чревато для сервера. А делать это из ХП - вообще свинство. В FB, по крайней мере.

> а вообще данный кусок (но с необходимыми полями) уменя работеет уже
> около года, впритом что импорт/экспорт далается как текстовой та и
> числовой информации десятки раз на день и никаких проблем не было
У каждого свои задачи. Но такие вещи, имхо, больше на импорт ориентированы, причем не многократный, а одноразовый. Потому как это не пользовательская задача, а админская.


Carmen   (2007-01-05 20:13:00) [9]

1. то что на сервере проблем не вижу
2. зачем делать экспорт когда незнаеш какие поля надо экспортировать, вообще не select * from table into to 'otchet.xls' а так как я привел
3. такая вигрузка работает для любых данных, в том числе и числовых (з блоб полями не пробовал)
4. а чем трудно это запихнуть в процедуру на сервере или на клинте....

а вообще данный кусок (но с необходимыми полями) уменя работеет уже около года, впритом что импорт/экспорт далается как текстовой та и числовой информации десятки раз на день и никаких проблем не было.

а придумывать свой велосипед для простого експорту данных не вижу смысла


Desdechado   (2007-01-05 15:31:00) [10]

carmen ©   (05.01.07 14:28) [11]
Во-первых, это только на сервере.
Во-вторых, никаких форматов аля " select * from table into to 'otchet.xls'не поддерживается.
В-третьих, такая выгрузка работает только с CHAR-полями, числовые туда идут в нечитаемом виде, блобы вообще не поддерживаются.
В-четвертых, удалить этот файл уже нельзя без DROP TABLE.


vlad-mal   (2007-01-05 14:55:00) [11]


> В самом IBExpert'е средства экспорта есть, но мне это, естественно,
>  надо программно.

IBEScript бросьте возле клиентской программки - вот Вам и будет "программно"


carmen   (2007-01-05 14:28:00) [12]

Так как в вопросе конкретно указано FireBird 2 то это просто сделать и самим FireBird посредством SQL-запроса.
1. Создать в базе таблицу, которая будет ссылатся на внешний файл. Например:

Create Table External_Table File 'name_file'
(
Field01 Char(10),
Field02 Char(128),
...
FieldXX Char(100)
)

2. Для записи в этот файл используем:

insert into external_table
select pole01, pole02, pole03
from необходимая_таблица
where необходимое условие


И все больше ничего придумывать ненадо.

Таким же способом можно и наоборот из внешнего файла вставлять в базу


Anatoly Podgoretsky   (2007-01-05 13:54:00) [13]

> Desdechado  (05.01.2007 13:51:08)  [8]

Вполне в понятном, типовой OLE DB драйвер для ODBC
Движок должен поддерживать гетерогенные запросы, но это не проблема SQL


Megabyte   (2007-01-05 13:53:00) [14]

В самом IBExpert'е средства экспорта есть, но мне это, естественно, надо программно.
Ладно, сам сделаю, просто интересно было узнать....


Desdechado   (2007-01-05 13:51:00) [15]

> INSERT INTO ... SELECT FROM ...
> Это типовая SQL конструкция.
Но только для таблиц в одной БД, а не в непонятного вида "внешнем файле".


Anatoly Podgoretsky   (2007-01-05 13:43:00) [16]

> Desdechado  (05.01.2007 13:31:06)  [6]

Если движок позволяет делать гетерогенные запросы, то это уже язык.
INSERT INTO ... SELECT FROM ...
Это типовая SQL конструкция.


Desdechado   (2007-01-05 13:31:00) [17]

> ну это смотря какой sql, каким движком реализован,
Это уже не SQL, а его расширения.
В Оракле, например, много системных пакетов для разных целей (и таких в т.ч.). Но это не делает этот функциональный мусор частью языка SQL.
Тем более движок - не язык.


Anatoly Podgoretsky   (2007-01-05 13:21:00) [18]

> sniknik  (05.01.2007 13:12:04)  [4]

> ну это смотря какой sql

Firebird гетерогенные запросы не поддерживает.


sniknik   (2007-01-05 13:12:00) [19]

> SQL - это язык работы с данными.
> Он не знает ни о каких внешних файлах, тем более о каких-то их форматах типа экселя.
ну это смотря какой sql, каким движком реализован, jet так вполне знает разные внешние файлы, эксел в том числе. т.что можно и sql-лем экспорт делать.
mssql через oledb провайдера (тот же jet) тоже можно.
а вот Firebird не знаю, возможно тоже какоето средство экспорта есть. надо по нему доки читать.


Desdechado   (2007-01-05 12:56:00) [20]

SQL - это язык работы с данными.
Он не знает ни о каких внешних файлах, тем более о каких-то их форматах типа экселя.
Тебе нужно, ты и пиши. Или пользуй готовые программы.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо