CSVファイルの読み込み失敗: 「A column named 'XX' already belongs to this DataTable.」

:grey_question: Question

『CSV を読み込み』アクティビティを使用し、CSVファイルを読み込む際に以下のエラーが発生し、処理が異常終了しました。

CSV を読み込み: A column named ‘Name’ already belongs to this DataTable.

原因と対策を教えてください。

CSVファイルの内容は以下の通りです。

ID,Name,Age,Name,Country

1,田中太郎,30,田中,日本

2,鈴木花子,25,鈴木,日本

3,佐藤健,35,佐藤,日本

4,山田美咲,28,山田,日本

:bulb: Answer

原因

CSVファイルの1行目をヘッダとされます。先頭行に重複したカラム名が存在するため、カラム名の重複エラーが発生し、『CSVを読み込み』アクティビティによる出力先データテーブルの構築に失敗しました。

Resolution

CSVファイルを作成する際には、ヘッダーとしてデータテーブルのカラム名が重複しないように注意します。

すでに重複したカラムが存在する場合の回避策の一つとして、StringのReplaceメソッドを使用してカラム名を変更し、その後CSVファイルを読み込む方法があります。

以下はその実装例です。

  1. 『テキストファイルを読み込み』アクティビティを使用して、CSVファイルの内容をString型変数(例:stringCsvFile)に格納します。
  2. 『代入』アクティビティで、読み込んだStringの1行目の内容を書き換えます。
  • : stringCsvFile
  • : stringCsvFile.Replace("ID,Name,Age,Name,Country", "ID,Name,Age,Surname,Country")※二つ目の「Name」を「Surname」に変更します。
  1. 『テキストファイルに書き込み』アクティビティを使用して、編集した内容をCSVファイルに書き込みます。
  2. 『CSVを読み込み』アクティビティを使用し、CSVファイルの内容を指定したデータテーブルに書き込みます。