非常に古いアプリケーション (DOS ベースのアプリケーション) から .csv ファイルをエクスポートするプロジェクトに取り組んでいます。エクスポートは機能しますが、列が切り捨てられ (ランダムに見える)、次の行に挿入されます。それは通常、単語の後半またはそのようなものです。Perl を使用してこれらの行を削除する方法があれば、私が知りたいことです。現在、Perl スクリプトを使用してすべてのコンマ区切り記号を削除し、パイプ (|) 区切り記号に置き換えています。パイプを使用すると、SQL に簡単に挿入して使用できることがわかりました。私はPerlに非常に慣れていませんが、このコードはカンマをパイプに置き換えるのに完全に機能します。これを使用して「悪い」行を削除する方法はありますか。一括挿入で SQL にインポートしようとしましたが、「49 行 17 列の一括読み込みデータ変換エラー (切り捨て)」などのエラーが表示されます。エクスポートを確認したところ、これらのエラーは、17 行すべてを含む完全な列がある場所で発生していますが、次の行は単なる |cial) または |3 です。これを明確にしたことを願っています。お手伝いありがとう。
use strict;
use warnings;
use Text::CSV_XS;
my $in_file = "Deal_Log.csv";
my $out_file = "NewDeal.csv";
open my $fh, '<', $in_file or die "$in_file: $!";
open my $out_fh, '>', $out_file or die "$out_file: $!";
my $in_csv = Text::CSV_XS->new;
my $out_csv = Text::CSV_XS->new( { sep_char => '|', eol => "\n" } );
while( my $row = $in_csv->getline( $fh ) ) {
$out_csv->print( $out_fh, $row );
}