ArcGISは、FGDBテーブルのサイズ制限内にあるにもかかわらず、巨大なCSVファイルからファイルジオデータベーステーブルへのすべてのレコードのインポートに失敗します


11

4 GBのRAMを搭載したWindows 7 64ビットでArcGIS 10.0を使用しています。

ArcGISにインポートするCSV形式の非常に大きなテーブルがいくつかあり、それらはすべて約30フィールド、テーブルごとに500万件以上のレコード(一部は2倍以上)、最大約5 GBのファイルサイズを持っています。最終的にそれらをフィーチャクラスにリンクし、それらの場所に従ってテーブル内の結果を分析できるように、それぞれを個別のテーブルとしてファイルジオデータベースにインポートしようとしています。

問題は、ArcGISが特定の時点でレコードのインポートを中止したように見えることです。[変換]> [ジオデータベースへ]の[テーブルからテーブルへ]ツールを使用していますが、[行のコピー]ツールにも同じ問題があります。CSVファイルを最初にFGDBテーブルに変換せずにArcGISに直接追加しただけでも、問題は同じです。私のテーブルの1つには約1,100万のレコードがあり、ArcGISは約1,000万のレコードのみをインポートします。ArcGISはエラーが発生したことを教えてくれません。ツールは何も問題がないかのように終了します。

何度か試してみましたが、FGDBテーブルに入れるレコードの数は常に同じで、聞いたことのあるファイルサイズの制限ではないようです(2の正方形や16)。ArcGISは約600万件のレコードを含む別のCSVをインポートでき、すべてのレコードが処理されました(大きなテーブルで問題が発生しましたが、小さなものも今では疑わしいです)。ESRIのWebサイトには、ファイルジオデータベースの次のサイズ制限がリストされていますが、私はそれらのいずれにも到達していません。

  • ファイルジオデータベースのサイズ:制限なし
  • テーブルまたはフィーチャクラスのサイズ:1 TB(デフォルト)、4 GBまたは256 TB with keyword
  • フィーチャクラスとテーブルの数:2,147,483,647
  • フィーチャクラスまたはテーブル内のフィールドの数:65,534
  • フィーチャクラスまたはテーブルの行数:2,147,483,647
  • ジオデータベース名の長さ:フォルダーでオペレーティングシステムが許可する文字数
  • フィーチャクラスまたはテーブル名の長さ:160文字
  • フィールド名の長さ:64文字
  • テキストフィールドの幅:2,147,483,647

これらのテーブルに本当に必要なのは、いくつかのフィールドを追加し、他のいくつかを削除し、新しいフィールドの値を生成することです(いくつかの既存のフィールドの合計)。私はフィールド計算機に精通しており、数百万のレコードで構成されるテーブルを処理できることを知っている(またはこれまで知っていた)ため、ArcGISを使用していますが、他のほとんどのデスクトップソフトウェア(MS Access / Excel )その多くのレコードで窒息。そのため、他のソフトウェアを使用して元のテーブルを操作し、(非常に小さい)結果のテーブルをArcGISにエクスポートすることができます。本当に、私はこの問題を抱えていて、ArcGISが問題が発生しているというエラーや警告も出していないという事実から、このデータを可能な限りArcGIS外で処理したいと思っています。


2
「FGDBテーブルに入れるレコードの数が常に同じである」場合、最後と次のレコードを調べて、以前に正常にインポートされた数百万と比較して一貫性のないものがあるかどうかを確認します。
PolyGeo

1
良いアイデア。切り捨てられたFGDBテーブルの最後のレコードとその後のレコード(CSVから)の間に違いが見られません。インポートに成功したすべてのレコードをソースCSVから削除して、残りを別のFGDBテーブルにインポートしようとしましたが、うまくいきました。したがって、1つのレコードに問題はないようです。さらに悪いことに、2つのFGDBテーブルをマージし(2つの間にはすべてのソースレコードがあります)、ArcGISはすべてがうまくいったように見せかけますが、マージされたテーブルには2つの10.9百万レコードのうち960万だけが含まれますFGDBテーブル。
ダンC

ESRIでサポートインシデントを開きましたか?この時点で、かなり深刻な問題になる可能性のあるものを発見したようです。他に何もなければ、サポートスタッフは、既にソリューションを知っている可能性があるため、またはテストを支援する意思があるという理由だけで、それについて知ることに興味があります。
ゲット空間

Get Spatialには同意しますが、実行する最後のテストの1つは、同じ値を配置する1つのフィールドを持つCSVファイルを生成することです(おそらく「テスト」)。理論上、960万が最大である場合、この制限は1000万行の「テスト」が使用されるたびにヒットしますが、950万行が使用される場合はヒットしません。
PolyGeo

私は今、別の、しかし大きな(1000万件を超えるレコード)CSVを試してみましたが、同じように失敗しますが、別の行で(約890万件のレコードが入ります)したがって、特定のレコード数や特定のテーブルサイズではないようです。2つのフィールドを含むテストCSVを試し、何が起こるかを確認します。いずれにせよ、月曜日にESRIに電話しますが、このプロセスがエラーメッセージなしで失敗することは受け入れられず、レコードを疑ってしまいます。
ダンC

回答:


9

私はこれについてESRIサポートに電話しましたが、彼らの答えは励みにはなりませんでしたが、問題を説明しました。ESRIの言い換え:問題は、32ビットソフトウェアであるArcGIS Desktopが最大で4GBのRAMの使用に制限されていることです。テキストファイルは、テーブルとして保存する前にRAMで処理する必要があるため、処理中のいくつかのポーリングで、ArcGISはRAMの制限に達し、そこで停止していました。インポートするファイルのサイズは約6GBでした。どうやらエラーメッセージを出さずに失敗したという事実は私に固有のものであり、オフィスの他の人にそれをさせてみましたが、インポートはまだ失敗しましたが、エラーメッセージ(役に立たないものですが、少なくともユーザーは何か問題が発生したことを知っている)、ESRI担当者はエラーを与えるべきだと言った。

私の解決策は、テキストエディター(EditPad Proを使用)を使用してファイルを2つの小さなCSVに分割し、それぞれを個別のテーブルとしてFGDBにインポートし、2つのFGDBテーブルをマージすることでした。何らかの理由で、これを最初に試したときに失敗しましたが、後で働きました。これをもう少し完全にテストすることができます。このサイズのファイルを継続的に処理します。

ArcGIS 10.0を使用していますが、ArcGIS 10.1サービスパック1がリリースされたばかりで、64ビットバックグラウンドジオプロセッサーを使用する機能が追加されています。これにより、ジオプロセッサーは4GB以上のRAMそれをテストします。

更新:現在、ArcGIS 10.1 SP1(64ビットバックグラウンドジオプロセシングアドオンを使用)を使用しており、これらの巨大な.CSV(少なくともこれまで扱ってきたもの)を正常にインポートします。14GBのRAM(はい、14)を搭載したマシンでは、約10.5百万行の6GB .CSVがFGDBテーブルに正常にインポートされます。


1
GDALの64ビットビルドで実行してみてください。私はそれがうまくいくに違いない。
ラギヤセルバーフム

7

データをロードするために、巨大なCSVファイルをメモリに読み込むのはかなりばかげています。一度に1行を読むだけで十分です。

Pythonスクリプトを記述し、csvモジュールを使用して1 行ずつ読み取り、行をテーブルに挿入することをお勧めしますInsertCursor(または、できればarcpy.da.InsertCursor高速ですが、10.1でのみ使用可能)。

編集:最後の段落を読むだけです。これを実際にPython内ですべて簡単に実行でき、結果をCSVまたは他の形式にエクスポートすることもできるようです。

各行と列で何をする必要があるかを正確に説明できると便利です。


4

5GBのcsvファイルを小さく分割しようとしましたか?

行またはファイル数に基づいてcsvを分割するツールがあります。

ファイルを分割してからインポートを試みます。しかし、このツールには制限があり、ファイル内のテーブルに対してのみ機能すると思います(そう思います)。pls。試してみる。

http://www.shivaranjan.com/2008/11/06/how-to-split-csv-file-into-multiple-parts-easily-and-quickly/


必要に応じて、処理するCSVがそれほど多くないので、テキストエディターで手動で分割することをお試しください。ただし、ArcGISが大きなテーブルを誤解する習慣を作り、無用なエラーメッセージをスローする共通の礼儀さえ持たない場合は、他の誰かがこの問題を抱えているかどうかを確認したいと思います。それは問題になります。
ダンC

OK、私はこれを試したところ、途中で動作します。CSVを2つの小さなものに(手動で、テキストエディターを使用して)分割した後、2つの個別のFGDBテーブルに正常にインポートされ、すべてのレコードがそこにあります。しかし、これらの2つのFGDBテーブルを1つにマージしようとすると、ArcGISはプロセスに何も問題がないかのように再度実行され、マージされたテーブルには130万レコードが欠落します。
ダンC

2

パイプ区切りの大きなテキストファイル(2,712,391)行の約4分の1行で、このエラー(001156)が発生していました。
そのため、その行に何か問題があると思いましたが、残りの行と同じでした。
最終的に、部分インポートから行を削除してからデータをロードし(Load> Load Data ...)、2M +行すべてを取得できました。

私も、16GBのRAMで64ビットのバックグラウンドジオプロセシングを行った10.1 SP1を使用しています。これはRAMを使用するプロセスです(すべてのプロセスがまだ64ビットで有効になっているわけではありません)。
ゆっくりとした、ぎこちない回避策ですが、一貫して動作します。
ある程度のインポートで成功しない場合は、空のテーブルを最初に設定する必要があります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.