質問 |
||
| QNo.3700882 | エクスポート時の改行コードについて | |
|---|---|---|
| 質問者:azuaz_001 | SQLServe2000にて、bcpコマンドでテーブルのエクスポート(csv形式)を行いたいと考えています。しかし出力元テーブルの一部フィールドで改行が入ったデータがあり、出力時に行の体裁が崩れてしまいます。bcpコマンドにて出力時に上記の問題を回避する方法を探しています。(やりたいことはSQLServe上から定期的にCSVデータを出力するのが目的です。)どうかよろしくおねがいします。 | |
困り度:
|
||
| 質問投稿日時: 08/01/21 20:08 |
||
回答良回答20pt |
|
| ANo.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か、クエリアナライザでしたっけ?で 細かいところを調整して、実行すれば、恐らくいけるかと 思います) お試しください。 |
|---|---|
| 回答者:kero_mio | |
| 種類:アドバイス どんな人:経験者 自信:参考意見 |
|
| 回答日時: 08/01/22 20:21 |
|
| |
| この回答へのお礼 | ご回答ありがとうございます。思考錯誤しながらなんとか意図する作業ができました。どうもありがとうございました。 |
回答 |
|
| ANo.1 | CSVファイルに定義された改行付きイメージのまま テーブルにインポートしたいということで、よろしいでしょうか? (言い方を変えると、改行をReplaceしたり、消去したりしたくないということで、宜しいでしょうか?) また、インポート先のテーブルにある、体裁が崩れてしまう フィールドの型は何を使ってますか? (ntext, nvarchar, text, varchar など) もう少し細かい情報を補足頂けると回答しやすいので、 情報UPの程、よろしくお願いします。 |
|---|---|
| 回答者:kero_mio | |
| 種類:補足要求 どんな人:経験者 自信:参考意見 |
|
| 回答日時: 08/01/22 01:16 |
|
| |
| この回答への補足 | ご連絡ありがとうございます。 CSVファイルへのエクスポート時に改行を削除(もしくはReplace)した形 で出力したいのです。 フィールドの形はSQLChar型ですがSYBChar型にfmtファイルは変更しております。 ※最終的にやりたいことは出力したCSVファイルをOracleDBへSQLローダーにてインポートするのが目的です。 どうかよろしくおねがいします。 |
| この回答へのお礼 | この回答にお礼をつける(質問者のみ) |