function readOnly(count){ }
Starting November 20, the site will be set to read-only. On December 4, 2023,
forum discussions will move to the Trailblazer Community.
+ Start a Discussion
kstukudakstukuda 

ローカルのファイルをアップロードの方法

お世話になります。 

 

Visualforceページにてローカルにあるcsvファイルを選択・アップロードし、 

ファイル内の値をデータベースに書き込むという処理を実装したいのですが。

 

 

ローカルのファイルをアップロードし

Salesforce上で処理するということは可能なのでしょうか?

 

ikouikou

<apex:inputFile>でローカルのCSVをコントローラーに渡すことが可能なので、

Apex側でガリガリと1行単位やカラムで分割していけばオブジェクトに登録することができます。

 

ただ、ガバナー等の制限があるので結構キツイです。

 

注意点を以下にあげておきます

・行、列の区切りを判断するのが難しい

 ⇒改行やカンマがあった場合、それが区切り文字なのか、文字として使われているものなのか?

・SalesforceのDBに登録する場合はUTF8にコード変換が必要だが、Apex側でコード変換の機能が提供されていない


区切り文字に関しては極端な話し1文字ずつ処理していけば判断可能なのですが、実行可能なスクリプト総数のガバナー

があるので、それもままなりません。

対策⇒CSVファイルとして「この文字は使わない」「行端はこの文字にする」等の制限をつける

 

また文字コードに関してはやむを得ず、投入前に必ずCSVをUTF8にコード変換することで対応しました。

 

出来る限りデータローダを利用することをお勧めします:smileyindifferent:

 

ttsuchittsuchi

USのDeveloperforceにCSV Parseのサンプルがあるのでご参考まで。

詳細は見ていないのでイケてるかわかりませんが。。。

 

http://wiki.developerforce.com/index.php/Code_Samples#Parse_a_CSV_with_APEX 

kstukudakstukuda

返信ありがとうございます。

参考にさせていただきます。