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

挿入されたテーブル データを SQL サーバーの .txt ファイルにエクスポートする

    INSERTED からの結果を一時的に保存する別のテーブルを作成できます bcp を呼び出す前に .

    create trigger monitorTrigger on test 
    AFTER insert 
    as
    declare @sql varchar(8000)
    
    --delete it every time
    TRUNCATE TABLE test2.dbo.tempInserted
    
    --populate it from inserted
    INSERT INTO test2.dbo.tempInserted
    SELECT * FROM INSERTED
    
    --use it in bcp
    SELECT @sql = 'bcp "select * from test2.dbo.tempInserted" queryout I:\File\mytest.txt -c -t -T -S YAMUNA\SQLEXPRESS'
    
    exec xp_cmdshell @sql
    

    編集: テーブル tempInserted のため、これは明らかに機能しません。 bcp の時点でロックされています

    これは回避策のアイデアです。おそらく最も洗練されたソリューションではありませんが、動作するはずです (Express Edition を使用していない場合)。トリガーを使用して、挿入されたデータをこのテーブルに保存し、定期的に (たとえば 5 分ごとに) 実行され、そのテーブルから読み取り、ファイルにコピーして削除するジョブを作成できます。

    したがって、トリガーは次のようになります:

    create trigger monitorTrigger on test 
    AFTER insert 
    as
    BEGIN
      INSERT INTO test2.dbo.tempInserted
      SELECT * FROM INSERTED
    END
    

    およびファイルにコピーするストアド プロシージャ - ジョブから実行できます:

    CREATE PROC transferToFile 
    AS
    BEGIN
     declare @sql varchar(8000)
    
     SELECT @sql = 'bcp "select * from test2.dbo.tempInserted" queryout I:\File\mytest.txt -c -t -T -S YAMUNA\SQLEXPRESS'
    
     exec xp_cmdshell @sql
    
     --delete at the end
     TRUNCATE TABLE test2.dbo.tempInserted
    END
    


    1. Pythonのmysqlでプリペアドステートメントを使用する

    2. mysqlデータベースファイルを添付する方法

    3. SQL Server 2012 全文検索をインストールまたは追加する

    4. SQLステートメント-このクエリの逆を選択します