it-swarm-eu.dev

Uložit výsledky jako CSV * s * záhlavími v SSMS

S SQL Server 2008 R2, když výsledky uložím jako CSV, neexistují žádná záhlaví. Dokážu to obejít tím, že zkopíruji a vložím pomocí „Kopírovat s hlavičkami“, nebo jen chytám záhlaví a vložím je do CSV atd., Ale existuje lepší způsob, jak toho dosáhnout?

13
Kyle Brandt

V SSMS musíte změnit některé možnosti:

Nástroje - Možnosti - Výsledky dotazu - SQL server - Výsledky do mřížky (nebo textu) -> Při kopírování nebo ukládání výsledků uveďte záhlaví sloupců.

Změněná nastavení se použijí na nová, ale ne existující okna dotazů.

22
Marian

Vidím, že jste jasně uvedli, že hledáte řešení v SSMS ale myslel jsem si, že poskytnu řešení PowerShell pro případ, že by to pomohlo (SQLPS je přístupné zevnitř SSMS 2008 a 2008 R2).

Můžete použít SQLPS (nebo běžný PowerShell s SQL cmdlet snapin) pro spuštění něčeho takového:

Invoke-Sqlcmd -Query "sp_databases" -ServerInstance "LocalHost\R2" |
Export-Csv -Path "C:\temp\MyDatabaseSizes.csv" -NoTypeInformation

Pokud vás to zajímá, můžu s tímto příkladem pokračovat.

Pokud se vám líbí přístup skriptu PowerShell, mám skript, který Exportuje do CSV z SSMS přes PowerShell . Líbí se mi, že zatím můžete mít dynamický skript SQL, sakra, můžete vybrat jakýkoli text a SSMS jej předá skriptu jako argument.

Jedinou nevýhodou je, že jsem nenašel chytrý způsob, jak projít podél spojení aktuálního okna. Mým aktuálním řešením je mít nastaveny různé nástroje, které se liší pouze v jejich připojovacích řetězcích, tj. PROD_DW, PROD_DB, TEST_DW ...

3
billinkc

Mohli byste se spojit, aby se všichni spojili a explicitně přidali záhlaví sloupců jako jeden řádek, který bude vybrán bez skutečných řádků, například:

SELECT 'col1' AS col1... 
UNION ALL 
SELECT T.col1... 
FROM TABLE T

Největší bolest při tomto přístupu je druh nuceného obsazení charakteru v druhém výběru.

1
Phillip Senn