アプリ版:「スタンプのみでお礼する」機能のリリースについて

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

A 回答 (2件)

CSVファイルに定義された改行付きイメージのまま


テーブルにインポートしたいということで、よろしいでしょうか?
(言い方を変えると、改行をReplaceしたり、消去したりしたくないということで、宜しいでしょうか?)

また、インポート先のテーブルにある、体裁が崩れてしまう
フィールドの型は何を使ってますか?
(ntext, nvarchar, text, varchar など)

もう少し細かい情報を補足頂けると回答しやすいので、
情報UPの程、よろしくお願いします。

この回答への補足

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

補足日時:2008/01/22 09:00
    • good
    • 0

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か、クエリアナライザでしたっけ?で
 細かいところを調整して、実行すれば、恐らくいけるかと
 思います)

お試しください。
    • good
    • 0
この回答へのお礼

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

お礼日時:2008/01/24 10:55

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

関連するカテゴリからQ&Aを探す