![]() |
![]() |
|
как в SQL написать цикл по таблице или выгрузить базу ? | ☑ | ||
---|---|---|---|---|
0
nop
модератор
29.03.11
✎
11:38
|
по мотивам:
Как сделать JOIN для таблиц из разных БД ? Как сграбить запрос к MS SQL 2000 ? Помогите изучить СУБД сторонней программы на MS SQL 2000 Хочу сделать нечто вроде FOR EACH SO FROM SYSOBJECTS DO EXEC xp_cmdshell 'bcp "SELECT * from SO.name" queryout E:\fired_reports\SO.Name.txt -c -C1251 -T' то есть выгрузить данный каждой таблицы в одноименный txt |
|||
1
Господин ПЖ
29.03.11
✎
11:39
|
открой для себя курсоры...
|
|||
2
vde69
29.03.11
✎
11:40
|
XP рулит, создай, выполни, удали
|
|||
3
shuhard
29.03.11
✎
11:41
|
(1) или DTS
|
|||
4
Господин ПЖ
29.03.11
✎
11:42
|
declare @name varchar(128)
declare cur_doc cursor for select name from sysobjects where xtype = 'v' and name like 'Документ_%'order by name open cur_doc fetch cur_doc into @name while @@fetch_status = 0 begin exec ('delete from '+@name+' where ...) end close cur_doc deallocate cur_doc |
|||
5
nop
модератор
29.03.11
✎
11:49
|
(4) спасибо, только не delete и это не 1с :)
|
|||
6
sapphire
29.03.11
✎
11:53
|
см. sp_msforeachtable
|
|||
7
Ёпрст
гуру
29.03.11
✎
11:54
|
||||
8
nop
29.03.11
✎
11:56
|
блин, скоко способов, спасибо. Начал пробовать (4)
|
|||
9
sapphire
29.03.11
✎
11:56
|
(4) так проще :D
exec sp_msforeachtable 'truncate table ?' |
|||
10
nop
29.03.11
✎
11:58
|
(9) не, мне delete больше нравится. Только с xtype = 'u', а то с v нету ни одной
|
|||
11
nop
29.03.11
✎
12:03
|
Нормально будет?
Для любителей пошутить с delete и т.п., говорю заранее, что делать буду на рабочей базе, останавливать и делать копию возможности нет. --------------------------------------- declare @name varchar(128) declare cur_doc cursor for select name from sysobjects where xtype = 'u' order by name open cur_doc fetch cur_doc into @name while @@fetch_status = 0 begin exec xp_cmdshell 'bcp "SELECT * from '+@name+'" queryout C:\fired_reports\SO.Name.txt -c -C1251 -T' end close cur_doc deallocate cur_doc |
|||
12
МихаилМ
29.03.11
✎
12:06
|
курсоры заменяте функциями.
|
|||
13
ДенисЧ
29.03.11
✎
12:07
|
(11) если отдельная команда выполняется, то в общем - правильно
|
|||
14
nop
29.03.11
✎
12:13
|
(13) не выполняется
exec ('xp_cmdshell bcp "SELECT * FROM APPLICATION_SETTINGS" queryout C:\fired_reports\APPLICATION_SETTINGS.txt -c -C1251 -T') Descr=Line 1: Incorrect syntax near 'SELECT * from APPLICATION_SETTINGS'. SQLState=42000 Number=-2147217900 Native Error=170 |
|||
15
nop
29.03.11
✎
12:14
|
а, ваще прекрасно, процедуры xp_cmdshell ещё нет
|
|||
16
упс
29.03.11
✎
12:30
|
||||
17
nop
29.03.11
✎
12:37
|
Descr=The configuration option 'xp_cmdshell' does not exist, or it may be an advanced option
|
|||
18
nop
29.03.11
✎
12:42
|
так тоже самое получаю
USE master GO EXEC sp_configure 'show advanced options', 1 GO RECONFIGURE WITH OVERRIDE GO EXEC sp_configure 'xp_cmdshell', 1 GO RECONFIGURE WITH OVERRIDE GO EXEC sp_configure 'show advanced options', 0 GO |
|||
19
nop
29.03.11
✎
12:50
|
може проще xp_cmdshell самому добавить к БД master, если код найти
|
|||
20
nop
29.03.11
✎
12:53
|
такой подойдет?
http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=740&lngWId=5 --************************************** -- Name: Custom xp_cmdshell -- Description:Custom xp_cmdshell -- By: OddityX -- --This code is copyrighted and has-- limited warranties.Please see http://www.Planet-Source-Code.com/vb/scripts/ShowCode.asp?txtCodeId=740&lngWId=5--for details.--************************************** CREATE PROCEDURE xp_cmdshell(cmd varchar(255), @Wait int = 0) AS --Create WScript.Shell object DECLARE @result int, @OLEResult int, @RunResult int DECLARE @ShellID int EXECUTE @OLEResult = sp_OACreate 'WScript.Shell', @ShellID OUT IF @OLEResult <> 0 SELECT @result = @OLEResult IF @OLEResult <> 0 RAISERROR ('CreateObject %0X', 14, 1, @OLEResult) EXECUTE @OLEResult = sp_OAMethod @ShellID, 'Run', Null, cmd, 0, @Wait IF @OLEResult <> 0 SELECT @result = @OLEResult IF @OLEResult <> 0 RAISERROR ('Run %0X', 14, 1, @OLEResult) --If @OLEResult <> 0 EXEC sp_displayoaerrorinfo @ShellID, @OLEResult EXECUTE @OLEResult = sp_OADestroy @ShellID return @result |
|||
21
sapphire
29.03.11
✎
12:57
|
(19) Коль, ты бы написал, что за ошибка, версия серванта
|
|||
22
nop
29.03.11
✎
13:01
|
(20) блин, попробовал говорит "уже есть объект xp_cmdshell"
(21) ошибка в (17) MS SQL 2000 MSDE вроде |
|||
23
nop
29.03.11
✎
13:13
|
(22) + и в текстах встроенных процедур вызовы xp_cmdshell встречаются ввиде master..xp_cmdshell, а в списке процедур БД master она не встречается
|
|||
24
nop
29.03.11
✎
13:16
|
хух, вот это сработало
EXEC sp_configure 'show advanced options', 1 EXEC sp_configure 'xp_cmdshell', 1 RECONFIGURE GO EXEC master..xp_cmdshell 'dir *.exe' |
|||
25
nop
29.03.11
✎
13:23
|
снова проблемы
exec master..xp_cmdshell 'bcp "SELECT * FROM APPLICATION_SETTINGS" queryout C:\fired_reports\APPLICATION_SETTINGS.txt -c -C1251 -T' после master.. запрос пытается искать таблицу APPLICATION_SETTINGS в БД master, но её там нет. Таблицы БД мастер выгружаются норм |
|||
26
nop
29.03.11
✎
13:26
|
пошло вот так
exec master..xp_cmdshell 'bcp "SELECT * FROM xSQLProfiler.dbo.APPLICATION_SETTINGS" queryout C:\fired_reports\APPLICATION_SETTINGS.txt -c -C1251 -T' |
|||
27
nop
модератор
29.03.11
✎
15:23
|
вот такой пакет получился
--------------------------------------------- declare @name varchar(128) declare @dbname varchar(128) declare @bcpcommand varchar(256) declare cur_doc cursor for SELECT NAME FROM sysobjects WHERE xtype = 'u' order by name desc set @dbname = DB_NAME(@@PROCID) open cur_doc fetch cur_doc into @name while @@fetch_status = 0 begin set @bcpcommand = 'bcp "SELECT * FROM '+@dbname+'.dbo.'+@name+'" queryout "C:\fired_reports\'+@name+'.txt" -c -C1251 -T'; exec master..xp_cmdshell @bcpcommand fetch cur_doc into @name end close cur_doc deallocate cur_doc |
|||
28
nop
модератор
29.03.11
✎
15:23
|
всем спасибо
|
|||
29
nop
29.03.11
✎
15:29
|
чего то кодировка кривая :(
|
|||
30
nop
29.03.11
✎
16:09
|
хочу разбить комп уже!!1 Что с кодировкой ?
|
|||
31
ДенисЧ
29.03.11
✎
16:10
|
Кто ж тебя знает, что там у тебя с кодировкой...
|
|||
32
nop
29.03.11
✎
16:15
|
параметр кодировки -CRAW помог
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |