Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 2 [3] 4 5   вперед  Ctrl      все
 Re: сохранение результата запроса в файл Excel  [new]
Glory
Member

Откуда:
Сообщений: 104760
natya
надо ваша комментария

Вы начали - вам и заканчивать.
29 май 13, 10:40    [14363300]     Ответить | Цитировать Сообщить модератору
 Re: сохранение результата запроса в файл Excel  [new]
natya
Member [заблокирован]

Откуда: Азербайджан, Баку
Сообщений: 347
Glory
Я лучше со стороны посмотрю, каких результатов вы добьетесь.


а сейчас мы посмотрем каких результатов вы добьетесь.
29 май 13, 10:42    [14363313]     Ответить | Цитировать Сообщить модератору
 Re: сохранение результата запроса в файл Excel  [new]
Cammomile
Member

Откуда:
Сообщений: 1214
sql_padavan, конечно есть способ. Но для начала вы должны четко понять и написать что значит "форматированный" и "не как попало".
29 май 13, 10:44    [14363326]     Ответить | Цитировать Сообщить модератору
 Re: сохранение результата запроса в файл Excel  [new]
natya
Member [заблокирован]

Откуда: Азербайджан, Баку
Сообщений: 347
Glory
Вы начали - вам и заканчивать.

я не начал


я просто хотел помоч чем я могу
29 май 13, 10:44    [14363332]     Ответить | Цитировать Сообщить модератору
 Re: сохранение результата запроса в файл Excel  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6723
Может топик перенести в бесплатная работа?
29 май 13, 10:52    [14363388]     Ответить | Цитировать Сообщить модератору
 Re: сохранение результата запроса в файл Excel  [new]
Cammomile
Member

Откуда:
Сообщений: 1214
А я сегодня ужасненько добр.
Вот однозначно рабочий простой код. Там нет обработки всяких интересных случаев, но идею представляет замечательно, и сходу работает.

 
--[dbo].[MakeCSV]
--  @Object: таблица c данными для CSV
--  @Div: разделитель полей для CSV
--  @Retval:  готовый  CSV 

GO 
CREATE PROC [dbo].[MakeCSV] 
  @Object       SysName
  ,@Div   Varchar(10)  = ''
  ,@Retval      NVarChar(MAX) OUTPUT 
 
AS 
  SET NOCOUNT ON 
  
  DECLARE @ErrorText NVarChar(2000)
  SET @ErrorText = '' 
  BEGIN TRY 
    IF OBJECT_ID(@Object) > 0 BEGIN
      
      DECLARE @Data NvarChar(MAX)
      DECLARE @Fields NVarchar(MAX) 

      SET @Data = '' 
      SET @Fields = ''
      
      SELECT @Data = @Data + QUOTENAME([name]) + @Div FROM sys.columns C WHERE C.[object_id] = OBJECT_ID(@Object) ORDER BY C.column_id
  
      SET @Data = LEFT(@Data, LEN(@Data)-1) + Char(13)    
      SELECT @Fields = @Fields + 'REPLACE(ISNULL(CONVERT(NVarChar(4000), ' + QUOTENAME([name]) + '),''''),'';'','':'') '   + '+''' + @Div + '''+' FROM sys.columns C WHERE C.[object_id] = OBJECT_ID(@Object)
      SET @Fields = LEFT(@Fields, LEN(@Fields)-5)     
      
      DECLARE @Q VarChar(MAX)
      SET @Q = '' 
      SET @Q = 'SELECT   ' +  @Fields + ' + CHAR(13) FROM ' + @Object 
      
      DECLARE @Res TABLE ([Res] NVarChar(MAX) NOT NULL)
      
      INSERT INTO @Res SELECT @Data
      
      INSERT INTO @Res EXEC(@Q)
        
      SET @Data = (SELECT [RES] FROM @Res FOR XML PATH(''), TYPE).value('.', 'varchar(max)')
      SET @Retval = @Data 
  
    END 
    ELSE BEGIN 
      SET @ErrorText = 'Table or view ' + @Object + ' not found. ' 
      RAISERROR(@ErrorText, 16, 1) 
    END
     
  END TRY 
  BEGIN CATCH 
    SET @ErrorText = ERROR_MESSAGE()
    RAISERROR ('Error: %s', 16, 1 , @ErrorText )
  END CATCH 
  

GO 

/*


CREATE TABLE dbo.TableToCSVTest ( [FieldName] int) 
INSERT INTO dbo.TableToCSVTest  SELECT 111

DECLARE 
  @D NVarChar(Max) 

EXEC [dbo].[MakeCSV] 
   @Object	= 'dbo.TableToCSVTest'
  ,@Div = ';'
  ,@Retval    = @D OUTPUT 
 
 
  
EXEC [dbo].[spSaveToFile]  
	 @@File	 = 'путь к каталогу\ИмяФайла.CSV'
	,@@Data	 =	@D
        ,@@Encoding = 'utf-8'
  
*/



А текст [dbo].[spSaveToFile] можно найти в этом же топике выше
29 май 13, 11:02    [14363463]     Ответить | Цитировать Сообщить модератору
 Re: сохранение результата запроса в файл Excel  [new]
Cammomile
Member

Откуда:
Сообщений: 1214
ps
наваял на скорую руку, не вылизывал
29 май 13, 11:03    [14363474]     Ответить | Цитировать Сообщить модератору
 Re: сохранение результата запроса в файл Excel  [new]
zhutkij_off
Guest
OFF:
+
прикольно тут сегодня.
Glory vs Cammomile
но главный перл дня, это в разгар перепирательств
natya
а зачем нужн?


*тся
блин

29 май 13, 11:11    [14363525]     Ответить | Цитировать Сообщить модератору
 Re: сохранение результата запроса в файл Excel  [new]
Гость333
Member

Откуда:
Сообщений: 3683
Cammomile
ps
наваял на скорую руку, не вылизывал

У вас странное представление о CSV. Если в каком-либо значении встречается точка с запятой, то её не меняют на двоеточие, а заключают значение в кавычки. Если в значении встречается кавычка, то её задваивают, а значение опять-таки заключают в кавычки. Можно, конечно, и не анализировать вхождение этих символов, а априори для всех значений вычислять аналог
QUOTENAME(Значение, '"')
(почему аналог — потому что для строк длинее 128 символов функция QUOTENAME вернёт NULL).
29 май 13, 11:32    [14363663]     Ответить | Цитировать Сообщить модератору
 Re: сохранение результата запроса в файл Excel  [new]
Cammomile
Member

Откуда:
Сообщений: 1214
Специально написал, что наваял на скорую руку. =)
29 май 13, 11:38    [14363698]     Ответить | Цитировать Сообщить модератору
 Re: сохранение результата запроса в файл Excel  [new]
Cammomile
Member

Откуда:
Сообщений: 1214
Там, например, еще нужна замена точки на запятую в дробных числах, если мы хотим записывать дробные по российскому стандарту. Но со всем этим, я надеюсь, автор топика сам разберется, спустя какое-то время
29 май 13, 11:50    [14363787]     Ответить | Цитировать Сообщить модератору
 Re: сохранение результата запроса в файл Excel  [new]
natya
Member [заблокирован]

Откуда: Азербайджан, Баку
Сообщений: 347
Cammomile
Там, например, еще нужна замена точки на запятую в дробных числах, если мы хотим записывать дробные по российскому стандарту. Но со всем этим, я надеюсь, автор топика сам разберется, спустя какое-то время


молодец тебя

но у меня один вопрос

я создал дазу данных в скл2000

но могу сделат отчеты в скл скриптом

например отправит резултате запроса с загаловкой на excell
29 май 13, 13:41    [14364507]     Ответить | Цитировать Сообщить модератору
 Re: сохранение результата запроса в файл Excel  [new]
natya
Member [заблокирован]

Откуда: Азербайджан, Баку
Сообщений: 347
natya,

?????????????
29 май 13, 13:41    [14364516]     Ответить | Цитировать Сообщить модератору
 Re: сохранение результата запроса в файл Excel  [new]
Cammomile
Member

Откуда:
Сообщений: 1214
Извините, не понял.
29 май 13, 13:43    [14364534]     Ответить | Цитировать Сообщить модератору
 Re: сохранение результата запроса в файл Excel  [new]
natya
Member [заблокирован]

Откуда: Азербайджан, Баку
Сообщений: 347
создал базу данных скл2000

и хочу сделат отчет резултата запроса скл2000
29 май 13, 13:46    [14364569]     Ответить | Цитировать Сообщить модератору
 Re: сохранение результата запроса в файл Excel  [new]
natya
Member [заблокирован]

Откуда: Азербайджан, Баку
Сообщений: 347
в sql

резултата запоса получаем резултата простой таблича

phone number money
---------------------
888 000 23.10


хочу импортироват етот резултат в excell с загаловкой


например так


ччччччччччч ччччч ччччччч
kkk kkk kkk

phone number money
---------------------
888 000 23.10
29 май 13, 13:49    [14364590]     Ответить | Цитировать Сообщить модератору
 Re: сохранение результата запроса в файл Excel  [new]
natya
Member [заблокирован]

Откуда: Азербайджан, Баку
Сообщений: 347
natya,

вообше возможна ето?????
29 май 13, 13:52    [14364602]     Ответить | Цитировать Сообщить модератору
 Re: сохранение результата запроса в файл Excel  [new]
Cammomile
Member

Откуда:
Сообщений: 1214
Ну вы же сами составляете свой CSV.

Хотите сделать заголовок, добаавьте его к переменной в которой лежит уже собранный CSV.

Символ перевода строки - Char(13) ;-)
29 май 13, 14:06    [14364647]     Ответить | Цитировать Сообщить модератору
 Re: сохранение результата запроса в файл Excel  [new]
natya
Member [заблокирован]

Откуда: Азербайджан, Баку
Сообщений: 347
Cammomile,

пример можете записат ????
29 май 13, 14:09    [14364669]     Ответить | Цитировать Сообщить модератору
 Re: сохранение результата запроса в файл Excel  [new]
natya
Member [заблокирован]

Откуда: Азербайджан, Баку
Сообщений: 347
natya,

например

заголовок --------ПРИВЕТ ВСЕМ ДОРОГИЕ МОИ

ЗАПРОС-------------SELECT ID FROM MYTABLE WHERE PHONE IS NOT NULL
29 май 13, 14:11    [14364681]     Ответить | Цитировать Сообщить модератору
 Re: сохранение результата запроса в файл Excel  [new]
Cammomile
Member

Откуда:
Сообщений: 1214
Ну я не понял причем тут запрос. Но, предполагая что CSV уже сформирован, заголовок надо просто дописать.
DECLARE 
  @D NVarChar(Max) 

/* собрали CSV*/
SET @D = '[Фамилия];[Имя]' + Char(13) + 'Петров;Иван' +  Char(13) + 'Сидоров;Семен' + Char(13)
/*добавили заголовок*/
SET @D = 'Заголовок: тестовый заголовок' + Char(13) + @D  
/*записали в файл*/  
EXEC [dbo].[spSaveToFile]  
  @@File	   = 'путь к файлу\xxx.CSV'
 ,@@Data	   =	@D
 ,@@Encoding = 'utf-8'
  
 
29 май 13, 14:24    [14364778]     Ответить | Цитировать Сообщить модератору
 Re: сохранение результата запроса в файл Excel  [new]
Cammomile
Member

Откуда:
Сообщений: 1214
А если вам именно данные надо вернуть "в форматированном виде" , то примерно так.


Select Field1, Field2, Field3 From 
(
Select [rank]= 1,[Field1] = 'Заголовок: привет всем', [Field2] = null,[Field3] = null
union Select 2, '[Фамилия]', '[Имя]', '[Отчество]'
union Select 3, 'Иванов', 'Иван', 'Иваныч'
union Select 4, 'Симеонов', 'Семен', 'Семенович'
union Select 5, 'ПОДЫТОГ:', 'Итого, огого ', Cast(42 as Varchar)
) S
Order By [rank]

Но это ОЧЕНЬ дурная практика, и так делать никогда не надо. Рисовать отчетики, строго говоря, не работа сервера.
29 май 13, 14:34    [14364849]     Ответить | Цитировать Сообщить модератору
 Re: сохранение результата запроса в файл Excel  [new]
natya
Member [заблокирован]

Откуда: Азербайджан, Баку
Сообщений: 347
да ты прав

но знаеш так

в делфи7 такие отчеты можно спокойно сделат

но дело в том что за один отчет не надо создат exe file

если можно написат на самом sql

а процедура который ты мне отправил EXEC [dbo].[spSaveToFile]

я не смог получит резултат


если можно обясните более ясными

у меня нет опыт такие запросы
29 май 13, 15:46    [14365358]     Ответить | Цитировать Сообщить модератору
 Re: сохранение результата запроса в файл Excel  [new]
sql_padavan
Member

Откуда:
Сообщений: 22
Я все еще не могу нормально вывести запрос.
ниже приведенная команда работает но без разделителя

PS SQLSERVER:\SQL\ADMINPC001\SQLEXPRESS\Databases\test> sqlcmd -S ADMINPC001\sql
express -d test -E -Q "SELECT id,manager1 as name FROM dbo.test" >d:\Testexcel.
csv

стоит мне добавить команду разделитель -s, (пробовал с кавычками и без) так сразу же выходит ошибка:

Отсутствует выражение после одноместного оператора "-".
строка:1 знак:2
+ - <<<< ?
+ CategoryInfo : ParserError: (-:String) [], ParentContainsErrorR
ecordException
+ FullyQualifiedErrorId : MissingExpressionAfterOperator

кто знает из за чего это может быть?
30 май 13, 07:53    [14367794]     Ответить | Цитировать Сообщить модератору
 Re: сохранение результата запроса в файл Excel  [new]
natya
Member [заблокирован]

Откуда: Азербайджан, Баку
Сообщений: 347
Cammomile
Но это ОЧЕНЬ дурная практика, и так делать никогда не надо. Рисовать отчетики, строго говоря, не работа сервера



а ест линкы чтобы посмотрет

у меня совсем нет опыта для отчета
30 май 13, 08:24    [14367844]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 2 [3] 4 5   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить