Jak exportovat údaje odděleny středníkem pomocí OPENROWSET?

0

Otázka

Já používám následující dotaz, chcete-li exportovat data do souboru:

INSERT IGNORE INTO OPENROWSET('Microsoft.ACE.OLEDB.12.0','Text;Database=C:\shared_files;HDR=YES;FMT=Delimited','SELECT * FROM [existing_file.csv]')
SELECT field_A, field_B, field_C FROM myTable

Po provedení, výsledek do souboru (C:\shared_files\existing_file.csv) je:

myField_A,myField_B,myField_C
"1","customer 01","address 01"
"2","customer 02","address 02"
"3","customer 03","address 03"

Chci, aby si to odděleny středníkem a bez uvozovek, jako v následujícím příkladu:

myField_A,myField_B,myField_C
1;customer 01;address 01
2;customer 02;address 02
3;customer 03;address 03

Zkoumal jsem, ale nenašel syntaxe pro OPENROWSET možnosti.

https://docs.microsoft.com/pt-br/sql/t-sql/functions/openrowset-transact-sql?view=sql-server-ver15

Jak používat OpenRowSet chcete-li vložit data do prázdného souboru?

VLOŽTE DO OPENROWSET Syntaxe s Dynamic T-SQL

Pokud je to nutné, přípona souboru může být změněn.

Ví někdo, jak nastavit volby v OPENROWSET výše, aby si, že požadovaného výsledku ?

export openrowset sql-server-2016 tsql
2021-11-23 19:12:39
1

Nejlepší odpověď

0

Řešení, které jsem vybudoval, není třeba používat OPERNROWSET, jako @Aaron Bertrand clearified to pro mě.

-- in the first line of the file to be created
INSERT IGNORE INTO some_table_to_get_data
SELECT 'colName_A;colName_B;colName_C' --insert a customized header, using any desired delimiter

-- then insert data, using desired formatting and converting to varchar to concatenate it
INSERT IGNORE INTO some_table_to_get_data
SELECT 
CONVERT(varchar(1000),field_A)
+ ';' + LTRIM(RTRIM(CONVERT(varchar(1000),field_B)))
+ ';' + LTRIM(RTRIM(CONVERT(varchar(1000),field_C)))
+ ';' + LTRIM(RTRIM(CONVERT(VARCHAR, field_D, 103)))
FROM myTable

DECLARE @myFileName VARCHAR(100)
DECLARE @cmd VARCHAR(8000)

SET @myFileName = 'desiredNameForMyFile.txt'
SELECT @cmd = 'sqlcmd -h-1 -W -S myServerName -d myDatabaseName -U myLoginName -P myPasswordName -Q "SET NOCOUNT ON; select dados from dbo.some_table_to_get_data" -o "C:\mySharedPath\' + @myFileName + '" '
--PRINT(@cmd)
EXEC MASTER..xp_cmdshell @cmd
2021-12-03 17:33:28

V jiných jazycích

Tato stránka je v jiných jazycích

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................