- ベストアンサー
エクスポート時の改行コードについて
SQLServe2000にて、bcpコマンドでテーブルのエクスポート(csv形式)を行いたいと考えています。しかし出力元テーブルの一部フィールドで改行が入ったデータがあり、出力時に行の体裁が崩れてしまいます。bcpコマンドにて出力時に上記の問題を回避する方法を探しています。(やりたいことはSQLServe上から定期的にCSVデータを出力するのが目的です。)どうかよろしくおねがいします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
SQL Server2000のデータをbcpでCSVにエクスポート→そのCSVをOracleのSQL*Loaderで、インポートするということですね。 SQLChar型?って定義はありましたか? ちょっと良く分からないのですが、SQL Serverで格納している データがSJISかUNICODEかにもよりますが、感覚的には こんな感じでできませんか? -- テーブル名の頭は、必ず「#」をつける。するとtempdbに -- このテーブルがSQL Server上で作成されます。 -- エクスポートするイメージのワークテーブルを作成する CREATE TABLE #WORK_TABLE ( field1 varchar(max), field2 varchar(max), field3 varchar(max)........ ) go -- ワークテーブルに改行文字をReplace INSERT INTO #WORK_TABLE SELECT field1, field2, field3, REPLACE(CAST(問題の改行含む項目 as varchar(max)), '0x0D0A', ' ') AS field4, ....... 以後項目分続く FROM [db名].[bcpでエクスポートしようとしていたテーブル] go -- BCP実行。細かい引数などのオプションは用途で合わせてください。 -- (特に接続方法や接続文字列) DECLARE @filePath nvarchar(max) DECLARE @bcpCmd varchar(max) SET @filePath = 'c:\aaa.txt' SET @bcpCmd = 'bcp "SELECT * FROM #WORK_TABLE" queryout "' SET @bcpCmd = @bcpCmd + @filePath + '" -U username -P pw -password' EXEC master..xp_cmdshell @bcpCmd これをSQL Server上でクエリとして実行します。 (Enterprise Managerか、クエリアナライザでしたっけ?で 細かいところを調整して、実行すれば、恐らくいけるかと 思います) お試しください。
その他の回答 (1)
- kero_mio
- ベストアンサー率90% (94/104)
CSVファイルに定義された改行付きイメージのまま テーブルにインポートしたいということで、よろしいでしょうか? (言い方を変えると、改行をReplaceしたり、消去したりしたくないということで、宜しいでしょうか?) また、インポート先のテーブルにある、体裁が崩れてしまう フィールドの型は何を使ってますか? (ntext, nvarchar, text, varchar など) もう少し細かい情報を補足頂けると回答しやすいので、 情報UPの程、よろしくお願いします。
補足
ご連絡ありがとうございます。 CSVファイルへのエクスポート時に改行を削除(もしくはReplace)した形 で出力したいのです。 フィールドの形はSQLChar型ですがSYBChar型にfmtファイルは変更しております。 ※最終的にやりたいことは出力したCSVファイルをOracleDBへSQLローダーにてインポートするのが目的です。 どうかよろしくおねがいします。
お礼
ご回答ありがとうございます。思考錯誤しながらなんとか意図する作業ができました。どうもありがとうございました。