Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
Владислав Y Member Откуда: Сообщений: 194 |
Подскажите пожалуйста. Установлена Microsoft SQL Server Managment Studio как выгрузить в текстовый файл данные из таблицы. В данной программе никогда не работал. Если есть возможность напишите подробно как осуществить выгрузку. И где именно прописывать SQL запрос. Заранее спасибо. |
24 окт 17, 16:53 [20896233] Ответить | Цитировать Сообщить модератору |
архивариус Member Откуда: Сообщений: 160 |
альтернативный вариант: Excel |
||
24 окт 17, 16:57 [20896247] Ответить | Цитировать Сообщить модератору |
LoopN
Guest |
Владислав Y, ПКМ по базе данных - экспорт - источник sql server - назначение "неструктурированный файл" |
24 окт 17, 17:29 [20896386] Ответить | Цитировать Сообщить модератору |
Владислав Y Member Откуда: Сообщений: 194 |
Это совсем не вариант. Данные хранятся на SQL сервере. Их нужно от туда вытащить. Хоть в txt хоть в exce. Вопрос как их вытащить. |
||||
25 окт 17, 12:31 [20898383] Ответить | Цитировать Сообщить модератору |
Владислав Y Member Откуда: Сообщений: 194 |
А это не понял. Можно поподробнее, куда зайти что написать. |
||
25 окт 17, 12:32 [20898393] Ответить | Цитировать Сообщить модератору |
alexeyvg Member Откуда: Moscow Сообщений: 31783 |
|
||||
25 окт 17, 12:41 [20898437] Ответить | Цитировать Сообщить модератору |
Andy_OLAP Member Откуда: я знаю, что Хапоэль Беэр-Шева - чемпион Сообщений: 3151 |
В командной строке bcp "SELECT * FROM БазаДанных1.dbo.Таблица1" queryout D:\каталог_для_txt\table1.txt -T -c -w -S MSSQLSERVER_или_название_именнованого_инстанса Когда отработает - проверить UTF16LE кодировку для русских букв, если нужно - дополнительно перекодировать в UTF8. Если нужно сразу в UTF8 - сделать SSIS. Если bcp "селект в файл TXT" устраивает - занести в SQL Agent Job шагом типа Operation System (CmdExec). Всё. |
||||
25 окт 17, 12:51 [20898489] Ответить | Цитировать Сообщить модератору |
архивариус Member Откуда: Сообщений: 160 |
Excel умеет работать с SQL сервер. (Вы пишите не знаю SSMS, научите. Я предложил вместо SSMS использовать Excel, но его вы видимо тоже не знаете) |
||||
25 окт 17, 12:58 [20898548] Ответить | Цитировать Сообщить модератору |
o-o
Guest |
Эксель-то умеет, но проблема не в нем, а в ТС, который ни в чем не умеет. у нас самый последний аналист и то данные в Эксель таскает с сервера без проблем. еще один плюс против обычной выгрузки, что данные обновляемы. хоть вручную, хоть ставь обновление на открытие файла. |
||
25 окт 17, 13:23 [20898706] Ответить | Цитировать Сообщить модератору |
Владислав Y Member Откуда: Сообщений: 194 |
/****** Скрипт для команды SelectTopNRows из среды SSMS ******/ Вот пишу такой запрос SELECT [Код] ,[НормирующийКоэффициент] ,[Примечание] ,[КонсультацииСПО] ,[ТрудоёмкостьЗЕТ] FROM [Деканат].[dbo].[Нагрузка] WHERE [УчебныйГод]='2017-2018' выдает в таблицу список а если добавляю SELECT [Код] ,[НормирующийКоэффициент] ,[Примечание] ,[КонсультацииСПО] ,[ТрудоёмкостьЗЕТ] FROM [Деканат].[dbo].[Нагрузка] WHERE [УчебныйГод]='2017-2018' queryout 'D:\table1.txt -T -c -w -S' Пишет ошибку Сообщение 102, уровень 15, состояние 1, строка 91 Неправильный синтаксис около конструкции "queryout". В чем может быть ошибка? |
||||
25 окт 17, 13:26 [20898728] Ответить | Цитировать Сообщить модератору |
o-o
Guest |
набрал команду для bcp.exe, но саму программу забыл? ![]() |
||
25 окт 17, 13:30 [20898743] Ответить | Цитировать Сообщить модератору |
o-o
Guest |
в деканате данных немного, можно и просто выполнить, да сохранить результаты К сообщению приложен файл. Размер - 28Kb |
25 окт 17, 13:34 [20898762] Ответить | Цитировать Сообщить модератору |
Владислав Y Member Откуда: Сообщений: 194 |
o-o, А возможно обойтись для выгрузки без команды bcp.exe, а только средствами SQL запроса? В MySQL это реализовано очень легко SELECT * FROM name_table INTO OUTFILE '/tmp/name_file.csv' FIELDS TERMINATED BY ';' ; А вот как это сделать на Microsoft SQL Server никак не найду. |
25 окт 17, 13:34 [20898766] Ответить | Цитировать Сообщить модератору |
Владислав Y Member Откуда: Сообщений: 194 |
На самом деле данных дам несколько миллионов строк. И этим методом я знаю как воспользоваться. Но нужно посредством SQL запроса. Нужно сначала выгрузить данные, а после изменений загрузить их обратно. Тоже посредством SQL запроса. |
||
25 окт 17, 13:37 [20898785] Ответить | Цитировать Сообщить модератору |
o-o
Guest |
чтобы эту менюшку получить, на панели результата ПКМ
если же еще дальше пойти, можно даже сменить типа файла ![]() это уже обычным мышиным кликом ![]() К сообщению приложен файл. Размер - 38Kb |
||
25 окт 17, 13:39 [20898794] Ответить | Цитировать Сообщить модератору |
Владислав Y Member Откуда: Сообщений: 194 |
Спасибо! С помощью мышки все получилось. Но нужно с помощью SQL запроса. |
||||
25 окт 17, 13:43 [20898826] Ответить | Цитировать Сообщить модератору |
o-o
Guest |
выгружать должен кто-то или что-то. запрос это запрос, вы его отослали на сервер, данные получили. теперь или сохраняем студией, или выгружаем мастером элспорта/импорта (это тоже "кто-то", это SSIS-пакет создается и выполняется) или выгружаем программой bcp (это не команда. это программа) или, что совсем просто, но вы упорно отвергаете, ВЫПОЛНЯЕМ ЗАПРОС ПРЯМО ИЗ ЭКСЕЛЯ. вот уж точно только запрос и выполняется. просто вы данные получаете не в студии, а прямо в Экселе |
||
25 окт 17, 13:45 [20898832] Ответить | Цитировать Сообщить модератору |
Владислав Y Member Откуда: Сообщений: 194 |
Если я Вас правильно понял как в MYSQL SELECT * FROM name_table INTO OUTFILE '/tmp/name_file.csv' FIELDS TERMINATED BY ';' ; На SQL сервере такой запрос сделать нельзя? А подскажите тогда как сделать загрузку данных из текстового файла в таблицу? В MySQL это делается посредством запроса. LOAD DATA LOCAL INFILE "pet.txt" INTO TABLE pet; |
||||
25 окт 17, 13:57 [20898917] Ответить | Цитировать Сообщить модератору |
o-o
Guest |
вот этим всем и занимается bcp Utility |
||
25 окт 17, 14:02 [20898940] Ответить | Цитировать Сообщить модератору |
Владислав Y Member Откуда: Сообщений: 194 |
А вот с ней никак пока не могу разобраться. Она входит в состав SQL Server? И ее можно прописывать в том же окне где и пишем запросы к SQL Server? Или эту программу можно использовать только через командную строку? |
||||
25 окт 17, 14:08 [20898964] Ответить | Цитировать Сообщить модератору |
Andy_OLAP Member Откуда: я знаю, что Хапоэль Беэр-Шева - чемпион Сообщений: 3151 |
В студии SSMS создаете внутри базы данных: create view [dbo].[Нагрузка_Учебного_Года_2017_2018] as SELECT [Код] ,[НормирующийКоэффициент] ,[Примечание] ,[КонсультацииСПО] ,[ТрудоёмкостьЗЕТ] FROM [Деканат].[dbo].[Нагрузка] WHERE [УчебныйГод]='2017-2018' Далее процитирую себя "В командной строке". Далее bcp "SELECT * FROM БазаДанных1.[dbo].[Нагрузка_Учебного_Года_2017_2018]" queryout D:\каталог_для_txt\Нагрузка_Учебного_Года_2017_2018.txt -T -c -w -S MSSQLSERVER |
||||
25 окт 17, 14:15 [20899014] Ответить | Цитировать Сообщить модератору |
Andy_OLAP Member Откуда: я знаю, что Хапоэль Беэр-Шева - чемпион Сообщений: 3151 |
Запросы внутри двойных кавычек - в окне, где и пишем запросы к SQL Server. Программу bcp с параметрами запускаем в командной строке. Можете текст завернуть в cmd/bat файл и запускать его. |
||||
25 окт 17, 14:16 [20899026] Ответить | Цитировать Сообщить модератору |
Andy_OLAP Member Откуда: я знаю, что Хапоэль Беэр-Шева - чемпион Сообщений: 3151 |
Еще более подробно - в окне, где и пишем запросы, пишем SELECT * FROM БазаДанных1.[dbo].[Нагрузка_Учебного_Года_2017_2018] и нажимаем F5. Если то, что нужно - а это то, что нужно, далее уже запускаем в командной строке вызов утилиты bcp. |
||||
25 окт 17, 14:18 [20899035] Ответить | Цитировать Сообщить модератору |
o-o
Guest |
да
ну вообще-то это улитита командной строки. но можно и через xp_cmdshell запустить. во втором случае надо иметь включенной серверную опцию 'xp_cmdshell', иметь права на выполнение xp_cmdshell, а у сервера должны быть права писать этот файл туда, куда укажете. не проще ли со своего рабочего места на свой же комп и писать, запустив утилиту в командной строке? никаких особых прав, кроме как на выгружаемыю таблицу, иметь не надо |
||||
25 окт 17, 14:19 [20899043] Ответить | Цитировать Сообщить модератору |
LSV Member [заблокирован] Откуда: Киев Сообщений: 30817 |
"Создать запрос". Написать запрос select * from MyTable Нажать "выполнить" Внизу появится грид. Ctrl+A Ctrl+С Данные будут в буфере. Буфер кидайте в нотпад. (профит) |
||
25 окт 17, 16:49 [20899772] Ответить | Цитировать Сообщить модератору |
Все форумы / Microsoft SQL Server | ![]() |