SQL Server 2005 - экспорт данных nvarchar (max) - PullRequest
5 голосов
/ 09 июня 2011

Я хотел бы выполнить запрос и сохранить результаты в виде файла, разделенного табуляцией.Это все не проблема, но в:

Запрос -> Параметры запроса -> Результаты -> Текст -> Максимальное количество символов в каждом столбце

Я могу выбрать максимум 8192 символа.Этого может быть недостаточно.Есть ли способ обеспечить включение всех символов, если столбец nvarchar (max)?

Спасибо!

Christian

Ответы [ 2 ]

5 голосов
/ 09 июня 2011

Щелкните правой кнопкой мыши базу данных в Management studio, Tasks => Export Data.Задайте в качестве места назначения «Назначение плоского файла», а затем решили написать запрос на экспорт.

3 голосов
/ 09 июня 2011

Я обычно использую Powershell для такого рода вещей.

Вот скрипт, не стесняйтесь настраивать под свои нужды. Я предполагаю, что у вашего nvarchar (max) нет разрывов строк, иначе файл с разделителями табуляции не имеет особого смысла.

##---[ Script Settings ]-------------------------------------------------------------------------------------------------------------
$sqlServer = "localhost"
$targetDbName = "AdventureWorks2008"
$reportName = "c:\result.txt"

##---[ Common Functions ]------------------------------------------------------------------------------------------------------------
function Get-Dataset {
param($sqlQuery, $sqlServer, $sqlCatalog)

  # Setup SQL Connection
  $sqlConnection = New-Object System.Data.SqlClient.SqlConnection
  $sqlConnection.ConnectionString = "Server = $sqlServer; Database = $sqlCatalog; Integrated Security = True"

  # Setup SQL Command
  $sqlCmd = New-Object System.Data.SqlClient.SqlCommand
  $sqlCmd.CommandText = $sqlQuery
  $sqlCmd.Connection = $sqlConnection
  $sqlCmd.CommandTimeout = 0

  # Setup .NET SQLAdapter to execute and fill .NET Dataset
  $sqlAdapter = New-Object System.Data.SqlClient.SqlDataAdapter
  $sqlAdapter.SelectCommand = $sqlCmd
  $dataSet = New-Object System.Data.DataSet

  #Execute and Get Row Count
  $nRecs = $sqlAdapter.Fill($dataSet)
  $sqlConnection.Close();
  $dataSet
}

##---[ Main ]------------------------------------------------------------------------------------------------------------------------

$dataset = Get-DataSet "SELECT * From DatabaseLog" $sqlServer $targetDbName 

$dataset.tables[0].rows |
  #Format-Table -auto | Out-File $reportName -width 100000
  ConvertTo-CSV -Delimiter "`t" -NoTypeInformation| Out-File $reportName

& ($reportName)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...