Подтвердить что ты не робот

Преобразование выходного файла SSMS.rpt в .txt/.csv

Я хочу экспортировать мой большой результат запроса SSMS (SQL Server Management Studio) (2.5 м строк, 9 полей) в виде .csv или с разделителями-запятыми .txt(с заголовками). (MS SQL Server 2005 Management Studio.)

Итак, я могу либо читать его по очереди в программу VBA (делать определенные вычисления по данным), либо делать запросы в нем в Excel (например, с помощью Microsoft Query). Расчеты сложны, и я предпочитаю делать это где-то еще, кроме SSMS.

Если я выберу "результат запроса в текст в SSMS и небольшой ответ (несколько строк, например, до 200 тыс.), я мог бы, конечно, просто скопировать и вставить в текстовый редактор. Для моего большого ответа здесь я мог бы, конечно, скопировать и вставить 200k или около того строк за раз, 10 раз, в текстовый редактор, такой как Ultra-Edit. (Когда я пробую все 2.5m сразу, я получаю предупреждение о памяти внутри SSMS.) Но для будущего Id как более элегантное решение.

Для результата запроса к файлу SSMS всегда записывает в .rpt файл. (Когда вы щелкните правой кнопкой мыши в окне результатов и выберите "Сохранить как", он дает ошибку памяти, как указано выше.)

- > Таким образом, мой единственный вариант заключается в том, чтобы SSMS выводил свой результат в файл i.e.rpt, а затем потом преобразовывал .rpt в .txt.

Я предполагаю, что это .rpt - это файл Crystal Reports? Или это не так. У меня нет Crystal Reports на моем ПК, поэтому я не могу использовать это для преобразования файла.

При открытии .rpt в Ultra-Edit это выглядит нормально. Однако в Microsoft Query в Excel заголовки не хотят показывать.

Когда я просто читаю и записываю .rpt, используя VBA, размер файла равен половине. (330 мг до 180 мг). В Microsoft Query заголовки показывают сейчас (хотя первое имя поля имеет смешной ведущий персонаж, который со мной случался раньше в других совершенно разных ситуациях). Кажется, что я могу сделать значимые сводные таблицы на нем в Excel.

Однако, когда я открываю этот новый файл в Ultra-Edit, он показывает китайские символы! Могли ли там быть какие-то забавные персонажи где-нибудь?

- > Возможно, есть свободное (и простое/безопасное) приложение конвертера. Или я должен просто верить, что этот .txt подходит для чтения в моей программе VBA.

Спасибо

4b9b3361

Ответ 1

Хорошо с помощью друга я нашел свое решение: Rpt файлы - это текстовые файлы, созданные в MS SQL Server Management Studio, но с кодировкой UCS-2 Little Endian вместо ANSI.

- > В Ультра-Редактирование файла опции, варианты преобразования, Юникод в ASCII сделал трюк. Текстовый файл сокращается с 330 до 180 мегабайт, Microsoft Query в Excel теперь может видеть столбцы, а VBA может читать файлы и обрабатывать строки *.

P.s. Другой альтернативой было бы использовать MS Access (который может обрабатывать большие результаты) и подключаться к ODBC к базе данных. Однако тогда мне придется использовать Jet-SQL, который имеет меньше команд, чем T-SQL MS SQL Server Management Studio. По-видимому, можно создать новый файл как .adp в MS Access 2007, а затем использовать T-SQL для задней части SQL Server. Но в MS Access 2010 (на моем ПК) этот вариант, похоже, больше не существует.

Ответ 2

Простой способ: в SQL Server Management Studio перейдите в меню "Запрос" и выберите "Параметры запроса…"> Результаты> Текст> Измените "Формат вывода" на "Запятая с разделителями". Теперь запустите ваш запрос для экспорта в файл, и после этого переименуйте файл из .rpt в .csv и он откроется в Excel :).

Ответ 3

Вот мое решение.

  • Использование Microsoft SQL Server Management Studio
  • Сконфигурируйте его для сохранения файлов с разделителями с разделителями в разделителе. Перейти к Запрос ' > ' Параметры запроса ' > ' Результаты ' > ' Текст ' > ' Формат вывода 'и выберите " Разметка с табуляцией" (нажмите OK)

введите описание изображения здесь

  • Теперь, когда вы создаете отчет, используйте меню Сохранить с кодировкой... 'и выберите " Юникод" (по умолчанию это "UTF8", )

введите описание изображения здесь

  • Теперь вы можете открыть файл с помощью Excel, и все будет в столбцах, без проблем с экранированием или посторонними символами (обратите внимание, что файл может быть больше из-за кодировки Unicode).

Ответ 4

Вы можете использовать BCP

Откройте командную строку и введите:

SET Q="select * from user1.dbo.table1"
BCP.EXE %Q% queryout query.out -S ServerName -T -c -t
  • Вы можете использовать -U -P (вместо -T) для аутентификации SQL.
  • В вашем приложении есть проблема с UNICODE. Вы можете форсировать кодовую страницу, используя -C {code page}. Если есть сомнения, попробуйте 850.

  • -T будет использовать табуляцию как разделитель полей, вы можете изменить его на запятую -T,

Приятно то, что вы можете вызывать это прямо из команды оболочки VBA.

Ответ 5

Это рекомендуемый способ, я вижу, вы можете это сделать.


Мой источник (Ответ от DavidAir)

Выберите "результаты в сетку", затем щелкните правой кнопкой мыши по сетке и выберите "Сохранить результаты как...". Это сохранит CSV.

На самом деле существует проблема с тем, что если некоторые значения содержат запятые, результирующий CSV не будет экранирован. Файл RPT на самом деле довольно приятный, поскольку он содержит столбцы фиксированной ширины. Если у вас есть Excel, относительно простой способ преобразования результата в CSV - открыть файл RPT в Excel. Это вызовет мастер импорта текста, и Excel выполнит довольно хорошую работу по угадыванию столбцов. Пройдите через мастер, а затем сохраните результаты как CSV.

Ответ 6

В моем случае я выполняю запрос в SSMS (перед этим нажмите CTRL + SHIFT + F), в результате откройте окно, чтобы сохранить его как файл rpt, я не смог его прочитать (на моем компьютере не установлена Crystal Report)...в следующий раз, когда я запустил запрос, я сохранил его как (все файлы) с расширением *.txt, и вот, я смог прочитать его как текстовый файл.

Ответ 7

Сначала получите ваши данные в файле .rpt, используя любой из вышеперечисленных методов.

По умолчанию .rpt с фиксированным пространством столбца. (262MB)

Запятая с Unicode. (52MB) - я использовал это.

Измените расширение файла на .csv.

Откройте/импортируйте его в Excel и проверьте данные. Тип файла - "Текстовый Юникод".

Сохраните его как CSV (Comma Delimited), который уменьшил размер до 25 МБ.

Ответ 8

Я рекомендую использовать "Мастер импорта и экспорта SQL Server" по нескольким причинам:

  • Выходной файл не будет иметь сообщения о состоянии внизу, как у файла .rpt (т.е. "(Затронуто 100 строк)"), что может испортить импорт данных
  • Возможность задания пользовательских разделителей строк и столбцов длиной более 1 символа.
  • Возможность указать настраиваемое сопоставление источника и назначения (т.е. Столбец FirstName может быть сопоставлен с first_name в CSV)
  • Возможность прямого переноса в любую другую базу данных, доступную с машины SSMS.
  • Возможность явно выбрать кодировку вашего файла и локаль

Доступ к нему можно получить, щелкнув правой кнопкой мыши вашу базу данных в студии управления (вы должны щелкнуть правой кнопкой мыши базу данных, а не таблицу) и выбрав Задачи> Экспорт данных.

Selecting the data export tool from the SSMS object explorer

Когда вас спросят об источнике данных, вы можете выбрать "Собственный клиент SQL Server", а когда вас попросят выбрать место назначения, вы можете выбрать "Назначение плоских файлов".

Затем вас попросят указать таблицу или запрос для использования.

Вы можете найти больше информации об инструменте здесь:

https://docs.microsoft.com/en-us/sql/integration-services/import-export-data/start-the-sql-server-import-and-export-wizard?view=sql-server-2017