sql >> データベース >  >> RDS >> Sqlserver

データをcsvファイルにエクスポートするストアドプロシージャは、1つのファイルにのみエクスポートします

    私にとってはうまくいくようです。いくつか提案があります:

    (1)日付を作成するためにその文字列連結をすべて実行するのをやめます。次の場合と同じことをはるかに簡単に行うことができます:

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

    (2)varcharの宣言を停止します 長さなし。そして、正しい出力を確保するために、私は変換することを好みます:

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

    (3)ストアドプロシージャを実行してフォルダ内の出力を検査することでコードを「デバッグ」する代わりに、最初に入力を健全性チェックしてみませんか?また、なぜ日付に2つの変数を使用するのですか?

    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. PostgreSQLの日付に月を追加

    2. SQL Server:クエリを使用して列のデフォルト値を確認する

    3. 列数が異なる2つのテーブルを結合する

    4. MySQLラーニングパス