• ベストアンサー

エクスポート時の改行コードについて

SQLServe2000にて、bcpコマンドでテーブルのエクスポート(csv形式)を行いたいと考えています。しかし出力元テーブルの一部フィールドで改行が入ったデータがあり、出力時に行の体裁が崩れてしまいます。bcpコマンドにて出力時に上記の問題を回避する方法を探しています。(やりたいことはSQLServe上から定期的にCSVデータを出力するのが目的です。)どうかよろしくおねがいします。

質問者が選んだベストアンサー

  • ベストアンサー
  • kero_mio
  • ベストアンサー率90% (94/104)
回答No.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か、クエリアナライザでしたっけ?で  細かいところを調整して、実行すれば、恐らくいけるかと  思います) お試しください。

azuaz_001
質問者

お礼

ご回答ありがとうございます。思考錯誤しながらなんとか意図する作業ができました。どうもありがとうございました。

その他の回答 (1)

  • kero_mio
  • ベストアンサー率90% (94/104)
回答No.1

CSVファイルに定義された改行付きイメージのまま テーブルにインポートしたいということで、よろしいでしょうか? (言い方を変えると、改行をReplaceしたり、消去したりしたくないということで、宜しいでしょうか?) また、インポート先のテーブルにある、体裁が崩れてしまう フィールドの型は何を使ってますか? (ntext, nvarchar, text, varchar など) もう少し細かい情報を補足頂けると回答しやすいので、 情報UPの程、よろしくお願いします。

azuaz_001
質問者

補足

ご連絡ありがとうございます。 CSVファイルへのエクスポート時に改行を削除(もしくはReplace)した形 で出力したいのです。 フィールドの形はSQLChar型ですがSYBChar型にfmtファイルは変更しております。 ※最終的にやりたいことは出力したCSVファイルをOracleDBへSQLローダーにてインポートするのが目的です。 どうかよろしくおねがいします。

関連するQ&A