• ベストアンサー

SSISでファイルの改行コードを確認するには。

大変、お世話になっております。 SSISでファイルを取り込むパッケージを作成しています。 改行コードが「LF」でも「CR + LF」でも取込めるようにできますでしょうか。一応、取り込むファイルの改行コードは「LF」に統一するようになっていますが・・・ なかには改行コードが「CR + LF」のファイルが合ったりしますので何とか両方の改行コードのファイルを取り込むようにしたいと思っています。 可能でしょうか? 可能な場合、どのようにすればいいのでしょうか? 聞いてばかり申し訳ありませんが宜しくお願いします。

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

  • ベストアンサー
  • jamshid6
  • ベストアンサー率88% (591/669)
回答No.2

そうですか。もう少し書くと以下の通りです。 1)データフロータスクのフラットファイルソースは、LF改行のファイルの設定にします。そうすると、CRLF改行のファイルを読み込んだときにもちゃんと改行されて読み込めます。末尾に余計なCRがついてくるだけです。 a,b,c,d,e[CR] s,t,u,v,w[CR] (実際はもちろん見えませんが) 2)あとは、この余計なCRを除去すればよいわけです。 具体的にアドバイスできる方法で説明しますが、変換元と変換先の間に、スクリプトコンポーネントを挟みます(種類は「変換」)。ここを通すことで、CRを除去します。入力列の内容を書き換えて流すわけですから、「入力列」の設定で「ReadWrite」に変更します。 次に、1行だけスクリプトを書きます。列xはCRを含む可能性がある最後のカラムです。 Row.列x = Replace(Row.列x, vbCr, "") これだけです。これでCRLFのときでも末尾のCRが除去されます。 ご理解いただけますか?

edo_1972
質問者

お礼

お礼が遅くなって申し訳ありません。 お陰様でエラーにならずに取り込む事ができました。 試しに下記のスクリプトを変更して逆もできるかと思いやってみました。 If InStr(1, Row.列x, vbCrLf) <> 0 Then   Row.列x = Replace(Row.列x, vbLf, vbCrLf) End If 一応できたんですがどうも自信がなくて・・・ このような事を聞いてはいけないんですが教えてくれませんでしょうか? 申し訳ありませんが宜しくお願いします。

その他の回答 (2)

  • jamshid6
  • ベストアンサー率88% (591/669)
回答No.3

スクリプト自体は動くと思いますが、おそらく使えないでしょう。 例を考えてみるとわかります。 ファイルA:a,b,c,d,e[CRLF]f,g,h,i,j[CRLF]k,l,m,n,o[CRLF]p,q,r,s,t[CRLF] ファイルB:a,b,c,d,e[LF]f,g,h,i,j[LF]k,l,m,n,o[LF]p,q,r,s,t[LF] このファイルをフラットファイルソースでLF改行にした場合、 ファイルA a,b,c,d,e[CR] f,g,h,i,j[CR] k,l,m,n,o[CR] p,q,r,s,t[CR] ファイルB a,b,c,d,e f,g,h,i,j k,l,m,n,o p,q,r,s,t という風に取り込まれます。「LFは改行」とした以上、区切った後の行にはもはや「LF」は存在しません。 したがってREPLACEするものはありません。 一方、フラットファイルソースをCRLF改行にした場合、 ファイルA a,b,c,d,e f,g,h,i,j k,l,m,n,o p,q,r,s,t ファイルB a,b,c,d,e[LF]f,g,h,i,j[LF]k,l,m,n,o[LF]p,q,r,s,t となり、ファイルBは1行で取り込まれることになります。1行と認識したあとで区切り文字を変更したところで、 a,b,c,d,e[CRLF]f,g,h,i,j[CRLF]k,l,m,n,o[CRLF]p,q,r,s,t というデータに変わるだけで、行数は1行のままです。

edo_1972
質問者

お礼

回答が遅くなって申し訳ありません。 体調が良くなくて寝込んでました。 そうですか、てっきりちゃんと動いていたのでうまくいっていると思っていました。 私が質問した内容と異なっていますがお許し下さい。 両方をカバーできるような処理はできますでしょうか。 すみませんが再度、ご教授いただけませんでしょうか。

  • jamshid6
  • ベストアンサー率88% (591/669)
回答No.1

ファイルを読み込む都度、LFかCRLFか判断するわけにはいかないので、一旦全部LFで取り込み、最終列末尾にCRがあれば除いてテーブルに入れる、というアプローチになるんではないかと思います。 派生列変換を使えれば楽ですが、私には派生列変換でCRを表現する方法が思いつきません。 ただ、スクリプトコンポーネントを使えばできます(vbCrが使えるため)。もしくは、最終列が文字列なら一旦テーブルに入れてしまって、SQLでCHAR(13)を削ってもいいかもしれません。

edo_1972
質問者

お礼

いつも回答していただきありがとうございます。 せっかくアドバイスいただいて申し訳ありませんがもう少し砕いて教えていただけませんでしょうか? 気を悪くしたら謝ります、申し訳ありませんが宜しくお願いします。

関連するQ&A

  • 【unix】nkfで文字コードを変えずに改行コードを変えたい

    unix(BSD)初心者です。 PHP経由でunixを操作、ファイルの加工をしております。 nkfコマンドにてLF改行をCR+LF改行にしたいのですが、 ・文字コードは無変化で改行コードだけ変える などということはできるのでしょうか? いろいろな文字コードのファイルが混在している場合に文字コードはそのまま保ちつつ改行コードはCR+LFに統一したいのです。 お詳しい方よろしくお願いします。

  • CSVファイルの改行コードを確認したい

    お世話になります。 AccessにてCSVファイルの特定の行を読み込みたいと考えております。 http://questionbox.jp.msn.com/qa8769403.html とりあえず読み込むことは出来たのですが、実データで試したところエラーとなってしまいました。 調べたところ、改行コードにはいくつか種類があり、恐らくLFコードであるために読み込みできないものかと思われます。 なお、実データをExcelで開き上書き保存すると読み込みできるようになるので、上書き保存したタイミングでLFがCR/LFに変わったのではないかと思われます。 で、質問としては実データの改行コードが本当にLFなのかどうかを確認したいのですが、どうやって確認すればよいのでしょうか。 ご教授の程、宜しくお願い致します。

  • 【VB6】項目内に改行コードを含むCSVファイルの読み込み

    いつもお世話になっております。 現在VB6.0にて、CSVファイルを読み込む処理をしています。 ・ファイル読み込みにて1行ファイルを読み込む。 ・Split関数で「,」で区切って項目ごとに配列に保持する。 というロジックで作成しているのですが、 項目内に改行コードが存在する場合にうまく読み込めません。 (1行ずつ読んでるので当然ですが…) 項目内のコードをLF、実際の行の改行をCR+LFで区別すると読み込む のは分かるのですが、項目内の改行コードがCR+LFの場合でも、 正しく読み込みたいです。 以上です。よろしくお願い致します。

  • 改行コードを変換できません(>_<)

    突然、改行コードの変換ができなくなりました。 使っているエディタはJedit4です。 改行コードをLFにして、保存してもなぜか開いてみるとCRになって保存されているんです。 新規作成して保存した書類は、LFにちゃんと保存できるのですが、 CGIをカスタマイズしようとしてあるファイルを開いて、改行コードをLFに設定して保存しても、なぜかLFにならないのでCGIを動かすこともできないんです。 いったい何が原因なんでしょうか? 何かアドバイスをお願いします。

    • ベストアンサー
    • Mac
  • 改行コードについて

    改行コードがよく解らないので説明お願いします 様々なサイトの改行コードの説明で LinuxはLF MacはCR WindowsはCRLFと説明しています 私の認識では LF=\n CR=\r CRLF=\r\n だと思っていました ここで疑問なのですが 確かに私の利用した環境ではLinuxの改行コードは\n, Windwosの改行コードは\r\nでした ところがMacの標準のメモ帳(テキストエディット)で文字を入力しても改行コードは\nです 確認方法は od -cというコマンドとfileというコマンドです これはつまりCRではなくLFということですよね? では、なぜ多くのサイトではMacはCRと説明しているのでしょうか? そもそもCR=\rという認識が間違ってるのでしょうか? よろしくお願いします

  • 改行コードについて

    こんにちは。 私はFedoraCore3を使用しています。 SSH接続でPoderosaを使いはじめてかなり経つのですが サーバーを立ててからずっと改行コードをCRでやっていました。 で、最近Linuxの改行コードはLFという事を知りました。 今の所、CRでやっていて 改行されなかったりする事もなく特に異常は ないのですがこのままCRでやってても問題ないのでしょうか? それとも、これからはLFでやったほうがいいですか? もう一つなんですがこの改行コードというのは viで編集しているの時は関係ないのですか? (今まで異常がないため) よろしくお願いします。

  • 改行コード変換

    先に「chompの使い方」で質問したものです。 文字コードを調べたところ、改行が「^M」で表示されていました。 テキスト文書ファイルもCGIプログラムも文字コードはEUCにしてありますし、改行コードもLFにしているんですが、フォームで入力される改行コードはCR+LFになっているようです。 これはどうやって制御すれば(全ての改行をLFにする)よいのでしょうか? ご教示いただけるとうれしいです。よろしくお願いいたします。

    • ベストアンサー
    • CGI
  • Windowsでの改行コード

    HTMLを書くのにあたりUNIXサーバが主流なのだから、 UTF-8、改行コードはLFで行うことを勧められました。 Windowsの改行コードはCR LFだそうですが、 LFにした場合、Windows上でJAVAScriptなどのテストをしたときに 何か不都合があるのでしょうか。 改行コードが CR LF でUNIX上でトラブルになった事例は見つけました。 反対のことが良く分かっていません。よろしくお願いします。

  • 改行コードCR(\r)をアンダースコア(_)に変換

    AIX、Kシェルです。 ファイルに出力された改行コードCR(\r)をアンダースコア(_)に変換したいのですが、 文字コードSJISだと期待通りの結果になるのですが、UTF-8だと全角の手前で止まってしまいます。 試したコマンドは下記です。 cat file.txt | tr "\r" "_" > tmpfile ex) file.txt(最終行は半角spaceと全角space) 10(改行コード=LF) 11(改行コード=CRLF) 12(改行コード=CR) 1(改行コード=LF) 2(改行コード=CRLF) 3(改行コード=CRLF) ああ(改行コード=CRLF)  (改行コード=CR) 【結果】tmpfile 10(改行コード=LF) 11_(改行コード=LF) 12_1(改行コード=LF) 2_(改行コード=LF) 3_(改行コード=LF) ああ_(改行コード=LF)  _ これがUTF-8だと12までは変換できるのですが、以降が出力されません。 UTF-8でも最後まで変換されるようにするにはどうすれば良いのでしょうか? 初心者で申し訳ありません。 お手数ですが、何卒宜しくお願い致します。

  • ファイル出力の改行コードをLFに

    また質問です。よろしくお願いいたします。 WindowsXPでperl5.8.7の環境です。 出力したファイルの文字コードをEUC、改行コードをLFで出力をしようとしています。 なお入力、出力ファイルには日本語が含まれています。 文字コードは希望通りいくのですが改行コードがうまくいきません。 Windowsのデフォルト改行コードCR+LFが出力されてしまいます。 (Terapad(エディタ)の改行コード表示がこうなっています。) (1)binmode(OUT);で行うと、 Wide character in print at jisyo01.pl line 63, <IN> line 97. というエラーが表示され、出力されない。 (2)$xxx[$i] =~ s/\x0D\x0A/\x0A/g; で改行コードを置換しようとしても、置換されず、 CR+LFである。 (3)$/ = pack("C", hex("A"));で 改行コードをchompした後、print OUT "$/";としても、 CR+LFのままである。 上手くいきません。いい方法ないでしょうか。 よろしくお願いいたします。

    • ベストアンサー
    • Perl