Melhor maneira de exportar dados do MS SQL server

3

[TL: DR] Eu preciso exportar dados ad-hoc de um banco de dados do MS SQL Server para um arquivo em minha máquina local usando um formato predeterminado com a codificação * Latin1. Eu não tinha certeza se o SSMS tinha uma maneira de criar um fluxo de trabalho ou se havia uma solução de script do PowerShell, mas infelizmente não posso usar o SSIS por vários motivos.

A história mais longa

Eu freqüentemente extraio dados de várias tabelas em várias instâncias do MS SQL Server, e todas essas instâncias estão executando várias versões do SQL Server de 2008 até 2016 atualmente. Depois de exportar os dados, eu os uso para criar diferentes ambientes de teste que são configurados usando pacotes do SSIS.

Geralmente, conecto-me aos SQL Servers usando o SSMS 2016 e, em seguida, uso o assistente "Export Data". Devido à necessidade de ter que clicar manualmente em várias opções com este método, não é muito eficiente e também está ocorrendo erro humano com esta tarefa devido a todos os aspectos de cliques manuais e erros sendo cometidos neste nível e não são percebidos até os dados são necessários, analisados, etc.

Eu gostaria de uma maneira de tornar esse processo que tentei explicar com mais eficiência e de automatizar mais por etapas manuais menos manuais. Eu tentei usar um método PowerShell (e SQLPS) e parece muito lento e a codificação para os arquivos exportados nunca foi realmente correta. Eu trabalho com DBs antigos e pacotes SSIS antigos, e converter tudo isso para UTF8 parece muito confuso, então eu absolutamente preciso de saída na codificação ANSI1252 (Latin 1).

Algum especialista com algumas boas sugestões que me ajudem?

    
por Niclas 15.07.2016 / 09:48

2 respostas

3

export ad-hoc data from a MS SQL server to a file on my local machine, using a pre-determined format with Latin1 encoding? SSIS is out (I think) due to read-only servers and varying SQL server versions.

Vou dizer de novo como mencionado em um comentário ... então confira o Utilitário BCP .

Você menciona codificação em Unicode ; e o Utilitário BCP suporta Formato de caracteres Unicode para exportar , por isso ... procure usar esse método para suas extrações ad hoc para um arquivo nas necessidades da sua máquina local .

Além disso, não se esqueça de COLLATE , pois, se aplicável, você poderia "< strong> use a cláusula COLLATE para aplicar uma expressão de caractere a um determinado agrupamento "dentro da lógica aplicada à consulta de exportação.

Import and Export Bulk Data by Using the bcp Utility (SQL Server)

This topic provides an overview for using the bcp utility to export data from anywhere in a SQL Server database where a SELECT statement works, including partitioned views

The bcp utility (Bcp.exe) is a command-line tool that uses the Bulk Copy Program (BCP) API. The bcp utility performs the following tasks:

  • Bulk exports data from a SQL Server table into a data file.

  • Bulk exports data from a query.

  • Bulk imports data from a data file into a SQL Server table.

  • Generates format files.

The bcp utility is accessed by the bcp command. To use the bcp command to bulk import data, you must understand the schema of the table and the data types of its columns, unless you are using a pre-existing format file.

The bcp utility can export data from a SQL Server table to a data file for use in other programs. The utility can also import data into a SQL Server table from another program, usually another database management system (DBMS). The data is first exported from the source program to a data file and then, in a separate operation, copied from the data file into a SQL Server table.

The bcp command provides switches that you use to specify the data type of the data file and other information. If these switches are not specified, the command prompts for formatting information, such as the type of data fields in a data file. The command then asks whether you want to create a format file that contains your interactive responses. If you want flexibility for future bulk-import or bulk-export operations, a format file is often useful. You can specify the format file on later bcp commands for equivalent data files. For more information, see Specify Data Formats for Compatibility when Using bcp (SQL Server).

Note!! The bcp utility is written by using the ODBC bulk-copy. For a description of the bcp command syntax, see bcp Utility.

Examples

For bcp examples, see:

  • bcp Utility
  • Create a Format File (SQL Server)
  • Examples of Bulk Import and Export of XML Documents (SQL Server)
  • Keep Identity Values When Bulk Importing Data (SQL Server)
  • Keep Nulls or Use Default Values During Bulk Import (SQL Server)
  • Specify Field and Row Terminators (SQL Server)
  • Use a Format File to Bulk Import Data (SQL Server)
  • Use Character Format to Import or Export Data (SQL Server)
  • Use Native Format to Import or Export Data (SQL Server)
  • Use Unicode Character Format to Import or Export Data (SQL Server)
  • Use Unicode Native Format to Import or Export Data (SQL Server)

source

    
por 17.07.2016 / 05:58
2

Tarde

Não tenho certeza se é de muita ajuda - mas sempre achei o uso de objetos .net bastante sólido quando se trabalha com SQL. Algo assim funciona bem para mim:

$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()
    
por 15.07.2016 / 19:50