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,山田,日本
Answer
原因
CSVファイルの1行目をヘッダとされます。先頭行に重複したカラム名が存在するため、カラム名の重複エラーが発生し、『CSVを読み込み』アクティビティによる出力先データテーブルの構築に失敗しました。
Resolution
CSVファイルを作成する際には、ヘッダーとしてデータテーブルのカラム名が重複しないように注意します。
すでに重複したカラムが存在する場合の回避策の一つとして、StringのReplaceメソッドを使用してカラム名を変更し、その後CSVファイルを読み込む方法があります。
以下はその実装例です。
- 『テキストファイルを読み込み』アクティビティを使用して、CSVファイルの内容をString型変数(例:
stringCsvFile)に格納します。 - 『代入』アクティビティで、読み込んだStringの1行目の内容を書き換えます。
- 左:
stringCsvFile - 右:
stringCsvFile.Replace("ID,Name,Age,Name,Country", "ID,Name,Age,Surname,Country")※二つ目の「Name」を「Surname」に変更します。
- 『テキストファイルに書き込み』アクティビティを使用して、編集した内容をCSVファイルに書き込みます。
- 『CSVを読み込み』アクティビティを使用し、CSVファイルの内容を指定したデータテーブルに書き込みます。