Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Съхранена процедура, която експортира данни в csv файлове, експортира само в един файл

Изглежда, че работи добре за мен. Имам няколко предложения:

(1) спрете да правите цялата тази конкатенация на низове, за да създадете дата. Можете да направите същото нещо много по-лесно, както в:

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

(2) спрете да декларирате varchar без дължина. И за да осигуря правилния изход, предпочитам да конвертирам:

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

(3) вместо да "отстранявате грешки" в кода, като стартирате съхранената процедура и инспектирате изхода в папката, защо не проверите първо своя вход? Освен това защо да използвате две променливи за датата?

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Таблица за изчисление за вмъкване на липсващи дати между две дати? SQL

  2. Как да четете и анализирате планове за изпълнение на SQL Server

  3. Използване на променлива в заявка OPENROWSET

  4. Какъв е правилният SQL тип за съхраняване на .Net времеви интервал със стойности> 24:00:00?

  5. 6 начина за проверка на размера на база данни в SQL Server с помощта на T-SQL