SQLServer上にあるDBをcsvファイルとして保存したいです。
➀DBのテーブルをOutput.csvファイルに保存し、新しく作成したフォルダに入れる方法が知りたいです。
➁DBに複数のテーブルがある場合は、テーブルごとのcsvファイルを作成する必要がありますか?
bat
1rem データ保管先 2set get_dir=D:\’フォルダパス’ 3 4rem データ取得フォルダ作成 5if not exist %get_dir% mkdir %get_dir% 6if not exist %get_dir%\%year% mkdir %get_dir%\%year% 7if not exist %get_dir%\%year%\%month% mkdir %get_dir%\%year%\%month% 8 9rem データ取得 10SQLCMD -S サーバ名 -U ユーザ名 -P パスワード -d DB名 -i Mst.SQL -s, -W -h -1 -o Output.csv
SQL
1 2DECLARE @d datetime = GETDATE() 3DECLARE @d1 char(8) = CONVERT(char(8), @d, 112) 4DECLARE @d2 char(6) = REPLACE( CONVERT(char(8), @d, 108), ':', '' ) 5DECLARE @d3 char(4) = CONVERT(char(4), @d, 111) 6DECLARE @d4 char(2) = CONVERT(char(2), @d, 1) 7 8DECLARE @eName varchar(70) = 'D:\フォルダパス\' + @d3 + '\' + @d4 + '\' + @d1 + @d2 + '_ACCOUNT' + '.csv' 9 10SELECT * FROM ACCOUNT =@eName
前質問(https://teratail.com/questions/174179)が何も生かされていないのはどうして?
ご回答ありがとうございます。
まず、DBをcsvファイルに保存することろから躓いてしまったので
bcpやバックアップ/リストアを反映していないのですが、間違っていますでしょうか…。
bcpコマンドでcsvの出力ができます。
前の質問でも言いましたが、目的は何ですか?
何のためにCSVを作ろうとしているのですか?
システムAをシステムBへマージするために
システムAのDBのデータを取得し、システムBへコピーするためです。
rem ログファイルフルパス
set log_name=%root_dir%フルパス_%dt%.a-log
bcp "ACCOUNT" out "c:\table1.csv" -S サーバ名 -U ユーザ名 -P パスワード -c -t"\t" >> %log_name%
こう書き直してみたのですがどうですか?
移行ではなくデータ連携処理という事ですか?
連携処理の場合は差分を連携するのでしょうか?
説明が足りずに申し訳ございません。
データの移行です
回答1件
あなたの回答
tips
プレビュー