sql >> Database >  >> RDS >> Sqlserver

Hoe maak je een tekstbestand met behulp van sql-script met tekst |

Het pipe-teken heeft een speciale betekenis in batch-opdrachten, dus het moet ontsnapt met behulp van het caret-teken. Dit zou moeten werken:

DECLARE @Text AS VARCHAR(100)
DECLARE @Cmd AS VARCHAR(100)
SET @Text = 'Hello world^| '
SET @Cmd ='echo ' +  @Text + ' > C:\AppTextFile.txt'
EXECUTE Master.dbo.xp_CmdShell  @Cmd

Hoewel dit echt geen goede manier is om gegevens naar een tekstbestand te schrijven:normaal gesproken zou SQL Server geen toestemming moeten hebben om naar de hoofdmap van de C:-schijf te schrijven, en xp_cmdshell is standaard uitgeschakeld. Ik raad je aan naar alternatieven te kijken zoals sqlcmd.exe , bcp.exe of een klein script in de taal van uw voorkeur (PowerShell, Perl, Python, wat dan ook).

Het is over het algemeen veel gemakkelijker, veiliger en flexibeler om gegevens uit SQL Server op te vragen dan om het vanaf de server te pushen. In uw specifieke geval lijkt het erop dat u een bestand met scheidingstekens wilt wegschrijven en bcp.exe is daarvoor bedoeld .



  1. Voorrang van operator in reguliere expressies

  2. MySQL - alternatieven voor geneste subquery's bij het beperken van geaggregeerde gegevens in een gecorreleerde subquery

  3. FOUT 1396 (HY000):bewerking DROP USER mislukt voor 'gebruiker'@'localhost'

  4. Alfanumeriek sorteren