Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Thủ tục đã lưu trữ xuất dữ liệu thành tệp csv chỉ xuất sang một tệp

Có vẻ làm việc tốt cho tôi. Tôi có một vài gợi ý:

(1) ngừng thực hiện tất cả việc nối chuỗi đó để tạo ngày tháng. Bạn có thể làm điều tương tự dễ dàng hơn nhiều như trong:

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

(2) ngừng khai báo varchar không có chiều dài. Và để đảm bảo đầu ra phù hợp, tôi thích chuyển đổi:

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

(3) thay vì "gỡ lỗi" mã bằng cách chạy quy trình được lưu trữ và kiểm tra kết quả đầu ra trong thư mục, tại sao không kiểm tra thông tin đầu vào của bạn trước tiên? Ngoài ra, tại sao lại sử dụng hai biến cho ngày?

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. Truy vấn SQL cho trung bình cuộn trong 7 ngày trong SQL Server

  2. Biểu diễn của DateTime tính bằng mili giây?

  3. nhận ID bản ghi SQL mới

  4. Yêu cầu không thành công hoặc dịch vụ không phản hồi kịp thời?

  5. Tạo Trigger để ghi SQL mà bảng bị ảnh hưởng?