0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【DataMagic】なんだ?な仕様「CSVファイルの改行の解析方法の指定」

0
Last updated at Posted at 2026-02-06

はじめに

DataMagic は、色々な機能を備えています。

機能・概要一覧
機能  概要
マッチング 入力ファイルのレコードと、共通する項目名をキーにした複数のマッチングファイルのレコードを結合し、一つのデータセットとして出力する
マージ 入力ファイルとマージファイルを連結して、入力マージデータとして取り扱えます。入力マージデータに対しては、データ加工前に重複行の削除やソートする
出力先振り分け 抽出条件に沿って、出力ファイルを振り分ける
数値項目演算 出力項目が数値タイプの場合、入力項目同士や任意の値との演算式を指定し、その演算結果を出力項目の値として出力する
データ抽出 入力データから、指定した条件に合致したデータのみを抽出する
項目入替 入力データの項目を入れ替えて、別のフォーマットで出力する
項目結合 複数の項目を結合して、1つの項目として出力する
項目分割 単一項目を分割して、複数の項目として出力する
全角半角 「カナ」「英数字」および「記号」を、半角から全角、全角から半角へ変換する
出力フォーマット指定 日付型、数字文字列型の入力項目を出力する際に、フォーマットを指定する
入力ソート 入力ファイルの形式がCSV、フォーマット、Excelの場合は、データ加工の前にソートする
属性変換 入力データを出力データに変換する際に、数値タイプを任意の数値タイプへ変換する
日付項目演算 日付データに対して、演算や西暦⇔和暦の変換を指定し、その結果を出力項目の値として出力する
関数 入力項目の値を関数で処理し、その処理結果を出力項目の値として出力する
マッピング 入力ファイルから出力ファイルへのデータの流れや加工、変換ルールを定義し、異なるデータ形式間での項目の対応関係を設定する
動的指定 データ加工の実行時にコマンドの引数に指定した数値や文字列を、条件や出力情報に使用できる
ユーザ出口変換 データを加工するときに、項目単位で独自の変換を設定するために、ユーザ出口プログラムを独自に作成できる
データ挿入 レコード内の任意の項目にユーザ指定の任意の値を挿入できる
仕様書出力 データ加工の処理と設定内容を仕様書としてExcelファイルに出力できる
チュートリアル データ加工の設定を対話的に実行して、DataMagicの基本的な操作方法を習得できる
カスタムエラー カスタムエラー条件を使用すると、データの形式は問題ないが、意図しないデータ(例 別の事業所のデータ)を検出したときにデータ加工をエラーにできる
ステップ実行 プログラムのデバッガの処理のように、経過を確認しながら実行し、意図するように変換できなかった場合の解析、またはデータ加工の処理経過の確認に使用できます。
コード変換 1バイトコード間、または2バイトコード間で、文字コードを変換する

今回の課題

ネタを探して 新機能・非互換説明書 を漁っていたら、DataMagic Ver.3からの改善機能の中に 以下の記述を発見!

  • CSVの項目に改行が含まれていても、改行をデータとみなす指定を追加しました
  • 囲み文字で囲まれている項目が2つ連続している場合にエスケープする指定を追加しました

本当は二つとも紹介したかったのですが、二つ目の「囲み文字」の動きが腑に落ちていないので、今回は一つ目の「改行をデータとみなす指定」だけ紹介。

入力データ

千代田区、中央区、港区、新宿区、文京区の区役所の所在地と最寄り駅の情報を入力データとして、中央区と新宿区の所在地の中に改行を含めてみました。

"区名","所在地","主な最寄り駅"
"千代田区","九段南1-2-1","九段下駅"
"中央区","築地
1-1-1","新富町駅"
"港区","芝公園1-5-25","御成門駅"
"新宿区","歌舞伎町
1-4-1","新宿駅"
"文京区","春日1-16-21","後楽園駅"

解析方法の指定

新機能・非互換説明書 によると、

  • システム動作環境設定画面[データ加工設定]タブの「改行を項目の一部として扱う」を "ON" にする。
  • システム動作環境設定ファイル(huledenv.conf)の「改行を項目の一部として扱う(ed_csv_linebreak)」に "1"(扱う)を指定する。

とあります。

システム動作環境設定画面はこちら :arrow_lower_left:
Qiita_026-01.jpg

システム動作環境設定ファイル(huledenv.conf)は、DataMagic の導入先ディレクトリ > etc ディレクトリ にあります。

Qiita_026-02.jpg

一応、新規導入時は両方とも、"扱う" 指定になっているようです。

データ加工

入力ファイルエリアの編集 をして、[プレビュー]をクリックすると、築地と歌舞伎町の後ろに入っている改行コードがデータ扱いされて(WindowsOSで検証しているので)CRLF(\r\n)で表示されています。

Qiita_026-03.jpg

ちなみに、どちらかの指定を "扱わない"(=改行コードをデータとみなさない)にして、プレビューしてみると

Qiita_026-04.jpg

エラーになっちゃった。

付随情報

CSVの項目に改行が含まれていても、改行をデータとみなす って教えられてもね~。

じゃあ、この 改行 :leftwards_arrow_with_hook: をどうしたいのか!

勿論、DataMagic は、その先もお役に立てます:bangbang:

この場合は、関数の REPLACE_REG を使用することで問題解決です:v:

改行コードを消したい

改行コードを削除したい場合は、出力情報の関数行に以下の関数を書けば :ok:

REPLACE_REG{/\r/\n/,///}

※当例の場合は2項目目の所在地
Qiita_026-05.jpg

すると、中央区と新宿区の所在地にあった改行コード(\r\n)が無くなりました

Qiita_026-06.jpg

改行コードを追加したい

改行コードを追加するのは、私の今のレベルではチョット困難。

REPLACE_REG関数が使えれば簡単なのですが、説明を見ると

REPLACE_REG{PATTERN,REPLACEMENT}
PATTERN:
  検索する文字列を指定します(省略不可)
REPLACEMENT:
  置換する文字列を指定します(省略不可)
  16進数での文字列の指定はできません :scream:

なので、いつか、もし、やり方が分かったら、コソっとこの下に追記します。

以上です。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?