Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» SQL запрос

Автор: Unnicked
Дата сообщения: 15.04.2015 09:51
Подскажите, как можно написать запрос для следующей задачи (для Oracle).

SELECT ID,S,A,B,C FROM T

возвращает значения вида:


Код: ID S A B C
1 2 3 4 5
6 7 8 9 10
Автор: MrZeRo
Дата сообщения: 17.04.2015 14:57

Цитата:

SELECT
DECODE(n.rn, 1, TO_CHAR(id), 2, 'A', 3, 'B', 4, 'C') AS id,
DECODE (n.rn, 1, t.s, 2, t.a, 3, t.b, 4, t.c) AS s
FROM t,
(
SELECT
level as rn
FROM dual
CONNECT BY level < 5
) n
ORDER BY 2
Автор: post4
Дата сообщения: 21.10.2015 16:05
Всем привет!

Есть БД , в ней столбец file_data с содержимым вида 0x78DAED7многоРазныхСимволов.

Знаю, что это doc файлы, другой инфы нет.
Как их слить с помощью PHP?

делаю так


Код:
$query = "SELECT file_data FROM table WHERE id_document = 20";
$result = sqlsrv_query( $conn, $query );

list($id, $id_document, $file_name, $file_data) = sqlsrv_fetch_array($result);

header("Content-Disposition: attachment; filename=$file_name");

header("Content-Type: application/force-download");
header("Content-Type: application/octet-stream");
header("Content-Type: application/download");
header("Content-Description: File Transfer");
//echo base64_encode($file_data);
echo ($file_data);
Автор: z0o
Дата сообщения: 22.10.2015 10:54
Это не DOC файлы, header не тот. Нужно знать как их вкладывают в БД, какое преобразование делают, и делать обратное преобразование.
Автор: vikkiv
Дата сообщения: 22.10.2015 12:52
Зависит от типа DB наверное, например в SQL Server это обычно тип данных varbinary(max) {к которому иногда применяется немного криптографии по какому-нибудь ключу для защиты данных},
наименования (и виртуальные пути) файлов часто стоят в отдельных столбцах той-же (или другой) таблицы
если без криптографии то на VB можно реализовать например как описано здесь
Автор: post4
Дата сообщения: 22.10.2015 14:49
z0o

код на PHP мой, и хэдеры задавал я, msword тоже пробовал - все тоже самое.
файлы точно DOC Типа.
Методом тыка выяснил, что возможно, в таблице хранятся HEX значения

Добавлено:
В свойствах таблицы прописано Data Type Image
Автор: LoneWolfII
Дата сообщения: 14.11.2015 09:01
Здравствуйте уважаемые!

Не знаю сюда обращаться или нет, пишу программу на Delphi и назрело пару вопросов:

1) Как узнать какая версия MS SQL установлена в системе, чтобы вывести в Label.Caption ?
2) Как из программы произвести упаковку конкретной базы?
Автор: Alexzzy
Дата сообщения: 15.11.2015 02:29
LoneWolfII
1. В системе может быть установлено несколько версий! Подключаешься к MS SQL и далее select @@version
2. Упаковка это shrink? Подключаешься к MS SQL и далее DBCC SHRINKDATABASE database_name
Автор: LoneWolfII
Дата сообщения: 16.11.2015 09:13
Alexzzy
Я думал в Delphi можно что-то вроде этого сделать:
osql -S localhost\sqlexpress -i C:\Backs\TEST_BAK.sql -o C:\temp\TEST_log_sql.log -E

Где osql.exe прога из состава MS SQL. Запуск пока осуществляю через ShellExecute

А вот содержимое TEST_BAK.sql


Цитата:
declare @path as varchar(200)
set @path = N'C:\Backs\TEST_BAK.bak'
BACKUP DATABASE [TEST_DB] TO DISK = @path
WITH NOFORMAT, INIT, NAME = N'TEST_DB',
SKIP, NOREWIND, NOUNLOAD, STATS = 10
GO


Все указанное выше конечно работает и без необходимости подключаться к базе. Вот такой реализации и хотелось бы получить непосредственно средствами/компонентами Delphi.
Автор: Alexzzy
Дата сообщения: 16.11.2015 14:13
LoneWolfII
Это в ветку про Delphi надо.
Коротко - засовываешь содержимое TEST_BAK.sql в свойство SQL компонента T...Query и вызываешь метод ExecSQL. Но информацию, которая выдается командой BACKUP DATABASE в TEST_log_sql.log вроде как не получить. Для BACKUP DATABASE я бы использовал вызов osql c динамическим формированием и удалением файлов и выводом информации из лог-файла, например, в TMemo.
Автор: LoneWolfII
Дата сообщения: 17.11.2015 13:57
Alexzzy

Цитата:
Коротко - засовываешь содержимое TEST_BAK.sql в свойство SQL компонента T...Query и вызываешь метод ExecSQL. Но информацию, которая выдается командой BACKUP DATABASE в TEST_log_sql.log вроде как не получить. Для BACKUP DATABASE я бы использовал вызов osql c динамическим формированием и удалением файлов и выводом информации из лог-файла, например, в TMemo.


Надо проверить такой подход.... но что-то мне подсказывает, что нужно подключаться к самой базе данных, вводя логин и пароль (который в моем методе не требуется, имея и так права админа)
Автор: Alexzzy
Дата сообщения: 17.11.2015 18:06
LoneWolfII
Так это тот же самый подход. Только вызывая osql посредством ShellExecute(Ex) надо дожидаться окончания выполнения процесса. Как - это уже отдельная тема (можно погуглить). В процессе ожидания, наверное, можно и лог читать.
Автор: LoneWolfII
Дата сообщения: 25.11.2015 08:10
Alexzzy

Цитата:
Коротко - засовываешь содержимое TEST_BAK.sql в свойство SQL компонента T...Query и вызываешь метод ExecSQL. Но информацию, которая выдается командой BACKUP DATABASE в TEST_log_sql.log вроде как не получить. Для BACKUP DATABASE я бы использовал вызов osql c динамическим формированием и удалением файлов и выводом информации из лог-файла, например, в TMemo.


Пришлось пока использовать такой метод. Пытался использовать метод UniDump.BackupToFile от Devart - не работает (по крайней мере у меня). При указывании наименования базы, пишет "Недопустимое имя объекта".
Автор: KDPoid
Дата сообщения: 11.12.2015 10:39
LoneWolfII,
Какой-нибудь T...Query
Заполнить его командой Backup и вызвать ExecSQL

Синтаксис команды BACKUP можно посмотреть здесь:
_https://msdn.microsoft.com/ru-ru/library/ms186865(v=sql.120).aspx

Тот, кто делает backup должен иметь на это право. Если считать: "Я же вошёл в винду, оно у меня всяко есть", то у Connection надо указать, чтобы не было запроса логина, испрользовалась аутентификация OC, ну и у MSSQL убедиться, что конкретной доменной учётке права предоставлены.
Автор: Alexzzy
Дата сообщения: 11.12.2015 12:39
KDPoid

Цитата:
Какой-нибудь T...Query
Заполнить его командой Backup и вызвать ExecSQL
 
Синтаксис команды BACKUP можно посмотреть здесь:
_https://msdn.microsoft.com/ru-ru/library/ms186865(v=sql.120).aspx

Этож уже обсудили и синтаксис тут приводился...

Страницы: 1234567891011121314

Предыдущая тема: Строковый параметр в REG_BINARY


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.