sql >> Database teknologi >  >> RDS >> Sqlserver

Lagret procedure, der eksporterer data til csv-filer, eksporterer kun til én fil

Ser ud til at fungere fint for mig. Jeg har et par forslag:

(1) stop med at lave al den strengsammenkædning for at bygge en dato. Du kan gøre det samme meget nemmere som i:

SELECT @StartDT = DATEADD(MONTH, DATEDIFF(MONTH, '19000101', @MinDOS), '19000101');

(2) stop med at erklære varchar uden længde. Og for at sikre det rigtige output foretrækker jeg at konvertere:

SET @FileLocation = 'C:\test\' + @TableName
   + CONVERT(CHAR(10), @StartDT, 120) + '.csv';

(3) i stedet for at "fejle" koden ved at køre den lagrede procedure og inspicere outputtet i mappen, hvorfor så ikke tjekke dit input først? Og hvorfor bruge to variable til datoen?

DECLARE 
   @StartDT DATE, 
   @TableName NVARCHAR(50), 
   @FileLocation VARCHAR(255);

SET @TableName = N'ViewAccountDetail';

SELECT @StartDT = DATEADD(MONTH, DATEDIFF(MONTH, '19000101', MIN(dos)), '19000101')
   FROM dbo.accn_demographics;

   PRINT @StartDT;
-- ^^^^^ debugging 101 - what month do we think we're starting at?

WHILE @StartDT < '20110901'
BEGIN
    SET @FileLocation = 'C:\test\' + @TableName
      + CONVERT(CHAR(10), @StartDT, 120) + '.csv';

      PRINT @FileLocation;
    --^^^^^ again, debugging 101 - what does the filename currently look like?

    --EXEC BCP_Text_File @TableName, @FileLocation    
    SET @StartDT = DATEADD(MONTH, 1, @StartDT);
END



  1. Få den første mandag i et år i SQLite

  2. SQLite underforespørgsel

  3. Returner rækker, der matcher elementer af input-array i plpgsql-funktionen

  4. Sådan omdøbes databasen i SQL Server - SQL Server / TSQL Tutorial Del 26