3

[TL:DR] Мне нужно иметь возможность экспортировать специальные данные из БД MS SQL Server в файл на моем локальном компьютере, используя предопределенный формат с кодировкой * Latin1. Я не был уверен, есть ли у SSMS способ создать рабочий процесс или есть решение для сценариев PowerShell, но я, к сожалению, не могу использовать SSIS по разным причинам.

Длинная история

Я часто извлекаю данные из нескольких таблиц в различных экземплярах MS SQL Server, и все эти экземпляры работают с различными версиями SQL Server с 2008 по 2016 год. После экспорта данных я использую их для создания различных тестовых сред, настроенных с использованием пакетов служб SSIS.

Обычно я подключаюсь к серверам SQL с помощью SSMS 2016, а затем использую мастер "Экспорт данных". Из-за необходимости вручную выбирать различные опции с помощью этого метода, он не очень эффективен, и при этой задаче также возникает человеческая ошибка из-за того, что все аспекты ручного нажатия и ошибки сделаны на этом уровне и не замечаются до данные нужны, анализируются и т. д.

Я хотел бы сделать этот процесс более эффективным и автоматизировать его, сделав его менее трудоемким. Я пытался использовать метод PowerShell (и SQLPS), и он кажется очень медленным, и кодирование для экспортируемых файлов никогда не было правильным. Я работаю со старыми БД и старыми пакетами SSIS, и преобразование всего этого в UTF8 кажется очень грязным, поэтому мне абсолютно необходим вывод в кодировке ANSI1252 (Latin 1).

Есть какие-нибудь эксперты с некоторыми хорошими предложениями, которые помогут мне?

2 ответа2

3

экспортировать специальные данные с сервера MS SQL в файл на моем локальном компьютере, используя предварительно определенный формат с кодировкой Latin1? SSIS отключен (я думаю) из-за серверов только для чтения и различных версий SQL-серверов.

Я скажу это снова, как упомянуто в комментарии ... так что проверьте утилиту BCP.

Вы упоминаете кодировку в Unicode ; и BCP Utility поддерживает Unicode Character Format для экспорта, так что ... посмотрите, как использовать этот метод для ваших специальных извлечений в файл на локальном компьютере .

Кроме того, не забывайте о COLLATE, поскольку, если применимо, вы можете « использовать предложение COLLATE для применения символьного выражения к определенному сопоставлению » в логике, применяемой для запроса на экспорт.

Импорт и экспорт массовых данных с помощью утилиты bcp (SQL Server)

В этом разделе представлен обзор использования утилиты bcp для экспорта данных из любой точки базы данных SQL Server, где работает оператор SELECT, включая разделенные представления.

Утилита bcp (Bcp.exe) - это средство командной строки, в котором используется API программы массового копирования (BCP). Утилита bcp выполняет следующие задачи:

  • Массовый экспорт данных из таблицы SQL Server в файл данных.

  • Массовый экспорт данных из запроса.

  • Массовый импорт данных из файла данных в таблицу SQL Server.

  • Создает файлы формата.

Доступ к утилите bcp осуществляется командой bcp . Чтобы использовать команду bcp для массового импорта данных, вы должны понимать схему таблицы и типы данных ее столбцов, если только вы не используете ранее существующий файл формата.

Утилита bcp может экспортировать данные из таблицы SQL Server в файл данных для использования в других программах. Утилита также может импортировать данные в таблицу SQL Server из другой программы, обычно из другой системы управления базами данных (СУБД). Данные сначала экспортируются из исходной программы в файл данных, а затем в отдельной операции копируются из файла данных в таблицу SQL Server.

Команда bcp предоставляет ключи, которые вы используете, чтобы указать тип данных файла данных и другую информацию. Если эти переключатели не указаны, команда запрашивает информацию о форматировании, такую как тип полей данных в файле данных. Затем команда спросит, хотите ли вы создать файл формата, содержащий ваши интерактивные ответы. Если вам нужна гибкость для будущих операций массового импорта или массового экспорта, файл формата часто бывает полезен. Вы можете указать формат файла в последующих командах bcp для эквивалентных файлов данных. Дополнительные сведения см. В разделе « Указание форматов данных для совместимости при использовании bcp (SQL Server)» .

Заметка!! Утилита bcp написана с использованием массовой копии ODBC. Описание синтаксиса команды bcp см. В разделе Утилита bcp.

Примеры

Для примеров BCP см .:

источник

2

После полудня,

Не уверен, что это очень поможет - но я всегда находил, что использование .net объектов довольно надежно при работе с SQL. Что-то вроде этого хорошо работает для меня:

$conn = New-Object System.Data.SqlClient.SqlConnection
$conn.ConnectionString = "Connection_String_Goes_Here"
$conn.open()

$cmd = New-Object System.Data.SqlClient.SqlCommand
$cmd.connection = $conn

$cmd.commandtext = "SELECT * FROM myTable"

$sqlResults = $cmd.ExecuteReader()

$sqlResults | Get-Member

if ($sqlResults.HasRows -eq $true) {
    while ($sqlResults.read()) {
        $sqlResults.GetValue(1)
    }
} else {
    "No Results"
}

$conn.Close()

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .