MID Server から CSV ファイルをインポートする方法Issue この KB は、MID Server からファイルをインポートする場合に適用されます。MID Server にファイルをエクスポートできますが、MID Server からファイルをインポートするための out of the box の機能はありません Causeこの機能は、シンプルな UI インターフェイスでは利用できませんでした。MID Server は、BIG データ転送や大きなファイルのアップリンクをストリーミングするようにゼロから設計されたものではありません。 これは、Tomcat の構成方法による制限があり、この種のリクエストが小さなチャンクに分割されていることを意味します。これはパフォーマンス上の理由から理想的ではありません。したがって、非常に大きなファイルはメモリ不足の問題を引き起こ し、インスタンスが応答を停止可能性があるため、使用しないことを強くお勧めします。Resolution さまざまなワークアラウンドがあります。 SOAP 受信要求を使用してファイルをインスタンスにインポートします。CSV または Excel (XLS) ファイルの直接インポート (MID Server に固有ではありません)添付ファイル API または MID コマンドプローブを使用してファイルを直接添付するカスタムコード (ServiceNow によって開発、テスト、またはサポートされていない) SOAP 受信要求を使用するインスタンスへのファイルのインポート MID Server を介して SOAP メッセージを送信する大きな添付ファイル (たとえば 250 MB) を ServiceNow にインポートすると、SOAP の最大要求サイズ制限に達します。1 つのインスタンスの最大ヒープメモリはデフォルトで 2 GB です。XML ペイロード (すべての SOAP 要求情報は XML 形式) を処理するメモリは、ペイロードサイズの 10 〜 20 倍になる場合があるため、ServiceNow インスタンスは 100 MB を超える SOAP ペイロードを処理できません。SOAP ペイロードサイズがこれよりも大きいと、ヒープメモリの上限に非常に近づいているため、インスタンスがクラッシュする可能性が非常に高くなります。プロパティ「glide.soap.max_inbound_content_length」のデフォルト値は 70 MB です。値を調整して、インスタンスのパフォーマンスに影響があるかどうかをテストすることを常にお勧めします。大きな添付ファイルをインポートする最適なソリューションは、代わりに添付ファイル API を使用することです。詳細については、 添付ファイル API を参照してください。コミュニティ Web サイトでも、同じディスカッションについて以下のリンクを参照できます。ServiceNow が 1 回の REST 呼び出しで受信できる JSON メッセージの最大サイズは? CSV または Excel (XLS) ファイルの直接インポート (MID Server に固有ではない) ビルトインの /sys_import.do「API」を使用すると、CSV または Excel ファイルを直接インポートできます。このために MID Server を使用する必要はありません。関連するツール (POST 要求を実行できるスクリプトまたは Postman などのプログラム) があるホストから実行できます。MID Server ホストからのインポートを妨げるものは何もありません。 これについては、CSV または Excel ファイルをインポートセットに直接投稿に記載されています。 スクリプトの例は次のとおりです:CSV ファイルの投稿:Perl および Java の例 注意:ファイルコンテンツ自体はマルチパート添付ファイルとして アップロードできます。このパラメーターの名前 (キー) には、任意の名前を付けることができます。 上記のスクリプトの例と同様に、Postman でこれをテストすることもできます: 簡単なテスト CSV ファイルの作成インスタンスで [データのロード] を使用して CSV ファイルを手動で 1 回アップロードし、必要なインポートセットステージングテーブル (u_mytestimport など) を作成します。アップロードされたデータをインポートセットステージングテーブルから削除します (例:u_mytestimport)https://INSTANCENAME.service-now.com/sys_import.do?sysparm_import_set_tablename=u_mytestimport&sysparm_transform_after_load=false への POST 要求 (u_mytestimport はインポートセットステージングテーブルです。これは、同じ列を含む CSV を手動で 1 回アップロードして既に作成されている必要があります) 認証:基本認証本文:form-data (マルチパート添付ファイルの場合)。ファイルタイプ (ドロップダウンから選択) の任意のキー (「uploaded_csv_file」、「somefile」など) を設定してパラメーター (これは POST パラメーターになります) を作成し、[値] にはファイルの場所を設定します送信すると、データがインポートセットステージングテーブルに表示されます。 添付API または MID コマンドプローブを使用したファイルの直接添付 推奨方法 (MID Server ホストからファイルを「プッシュ」) out of the box の(およびサポートされている) 添付ファイル API を使用して、インシデントなどの既存のレコードにファイルを添付できます。このアプローチは、ファイルを挿入する API 呼び出しを実行できるプログラムまたはスクリプトを MID Server ホストで実行する必要があります。これを MID Server ホストに実装する方法 (Windows の Powershell スクリプト、Linux の cURL を使用する bash スクリプトなど) は、サポート範囲外であり、サポートされません。 カスタマイズ (インスタンスのスクリプトを介して MID Server ホストからファイルをプル) それがオプションではなく、MID Server ホストからプルする必要がある場合は、MID Server コマンドプローブを利用できます。これにより、システムでシェルコマンドを実行できます。これは、次のようなスクリプトです (必要に応じて、スケジュール設定済みジョブとして実行できます)。 Linux または Macos:var probe = SncProbe.get("Command");probe.setName("cd /Users/me/Desktop && cat example.csv | base64");probe.create("<MID Server Name>"); Windows: 同等の Windows コマンド (ファイルのコンテンツを base64 でエンコードされた文字列として返す) の提案はこちら: https://stackoverflow.com/questions/37046771/base64-encode-string-command -line-windows このスクリプトを使用して ECC キューレコードを作成し、mid.server.<MID SERVER NAME GOES HERE> を mid.server.NAME_of_MID_Server (不明な場合は別の ECC キュー出力レコードからコピー)に置き換え、<COMMAND TO RUN> は、実行する Powershell コマンドに置き換えます。 ('< >'内ではありません) // based on Executing powershell command on mid server var payload = '<parameters>' + '<parameter name="probe_name" value="Windows - Powershell"/>' + '<parameter name="script.ps1" value="<COMMAND TO RUN>"/>' + '<parameter name="skip_sensor" value="true"/>' + '</parameters>'; var sysid = ''; var grECC = new GlideRecord('ecc_queue'); grECC.initialize(); grECC.agent = 'mid.server.<MID SERVER NAME GOES HERE>'; grECC.topic = 'Powershell'; grECC.name = 'Windows - PowerShell'; grECC.source = '127.0.0.1'; grECC.queue = 'output'; grECC.payload = payload; sysid = grECC.insert(); これに対する応答は、応答で ECC キューに書き込まれるファイルの base64 エンコード文字列になります。その後、これをインスタンスのビジネスルールを含む添付ファイルに変換できます。 次を使用して新しいビジネスルールを作成します。 名前:意味のあるもの (「Process Input ECC queue commandエントリー」など) When to run->When:After、Insert:チェック済み、Order:100 [When to run] -> [Condition]: 名前は cd /Users/me/Desktop && cat example.csv | base64 です(注意:これは、probe.setName() 呼び出しで実行しているコマンドとまったく同じである必要があります。Windows の場合は、grECC.name で設定しているコマンドです。または、この条件を省略して、条件を設定するスクリプトで if ステートメントを使用します。)トピックはCommandですキューはinputですステータスはreadyです [Advanced] をオンにすると、[Advanced] -> [Script] は以下になります ('incident', 'b1d588a21bab101093c210ea274bcbb7' を、添付ファイルを追加するレコードのテーブル名と sys_id に置き換えます)。 (function executeRule(current, previous /*null when async*/) {var encStr = gs.getXMLText(current.payload, "//stdout"); gs.info("Text was " + encStr);var stringUtil = GlideStringUtil;var attachment = new Attachment();attachment.write('incident', 'b1d588a21bab101093c210ea274bcbb7', 'example.csv', 'text/csv', stringUtil.base64DecodeAsBytes(encStr)); })(current, previous); この方法は、Linux MID Server ホストを使用する Paris テストインスタンスでテストされており、機能します (Windows MID ホストでの Powershell の使用はまだテストされていません)。ただし、これはカスタマイズであり、この情報は開発者がさらに作業するための提案であり、完全にテストされていない可能性があります。ServiceNow はカスタマイズのサポートを提供できません。 カスタムコード (ServiceNow によって開発、テスト、またはサポートされません。) リモートファイルインポーター:このサードパーティコードは、開発者サイトから入手できます。これは、Cloud Sherpas (現 Accenture) の開発者によって作成されました。これは Servicenow のコードではなく、ServiceNow ではサポートされていません。したがって、免責事項:このコードについては一切責任を負いません。これは Servicenow によって作成されたものではなく、現在のリリースでも機能することを前提としており、レビュー、テスト、および編集を行って適合性を確認する必要があります。リモートファイルインポーター ( [MID Server からファイルをインポート (Import Files from a MID Server)]、Valor Poland (Accenture)https://developer.servicenow.com/connect.do#!/share/contents/2271821_remote_file_importer_import_files_from_a_mid_server?t=Product_DETAILS