ArcGIS Desktopを使用してファイルジオデータベース内のフィールドを(永続的に)並べ替えますか?


18

ArcGIS 10.0を使用して、ファイルジオデータベース内のフィールドの順序を変更し、その順序をデータベースに保持することは可能ですか?

XMLにエクスポートし、フィールドの順序を変更するパーサーを作成してから、XMLから新しいデータベースを再作成することを検討しました。これは面倒なプロセスのようです。

別のアイデアは、既存のフィールド定義をExcelにインポートし、それらを並べ替え、CSVにエクスポートし、Pythonスクリプトを記述して、これらのフィールドを新しいジオデータベースに作成することです。このようなスクリプトは、ゼロから作成する前に存在しますか?

残念ながら、ArcGIS Diagrammerはフィールドの並べ替えをサポートしていないようです。

このプロセスを簡素化するために使用できるスクリプトまたはハッキングはありますか?


8
ideas.arcgis.com/ideaView?id=0873000000087wgAAAで投票されたことを願っています:-)
PolyGeo

ArcGIS Diagrammerでフィールドの順序を変更するには、フィールドコレクションに移動してフィールドを選択し、上/下矢印を押します。
blah238

@ blah238答えとしてそれを追加できれば、受け入れます。それは彼らの選手の一人がそれを書いたので、非常にうまく機能とのEsriによって半サポートされている
スティーブン鉛

1
ここでデモビデオがある- maps.esri.com/Diagrammer/reorderfields.htm
Geog

回答:


6

コメントで述べたように、ArcGIS Diagrammerでフィールドを並べ替えることができます。この回答では、より一般的な手順を段階的に投稿しました:フィーチャクラスフィールドの長さプロパティを更新する方法は?


ありがとう。ArcGIS Diagrammerは少し不安定です-正確にクラッシュするわけではありませんが、時々手作りのように感じられます。しかし、スキーマを変更するには、それが最良のオプションのようです。
スティーブンリード

10.0を超えて動作する可能性があります。ArcGIS 10.1を搭載したWin7 x64には問題なくインストールされていましたが、実行するとJust In Timeコンパイルエラーが発生して終了します。
マットウィルキー

1
ArcGIS DiagrammerはArcGIS 10.3以降では機能しなくなることに注意することが重要です。
マップマン

7

別の質問への答え私はそれを使用することが可能であることを言った要約統計を PULLITEMS(リオーダーフィールドの古い話す)の同等を行うこと。この手法はテーブルでのみ有効ですが、フィーチャクラスとテーブルの両方で機能するという別のスクリプトが利用可能になりました。

また、ArcGIS Make Query Tableツールを使用して、フィールドの並べ替えに対する永続的な回答をお勧めしますか?これは@klewisのこの答えに触発されました。


6

ET Geowizardsの無料バージョンがこれを行います。基本->図形の並べ替え。v10ファイルジオデータベースでテストしたところ、動作します。ただし、新しいフィーチャクラスを作成する必要があります。


5

Diagramer用のVisioがない場合-ここにある他のすべての回答は、すべての結合を中断します。私の場合、これがうまくいくことがわかりました:

  1. Arccatalogを使用してデータベース全体のスキーマをエクスポート(エクスポート-XML)-データをエクスポートせず、スキーマのみ
  2. オンラインのPretty Printサービスを使用してxmlをフォーマットするテキストエディターでXMLファイルを開き、好きなようにフィールドを並べ替える
  3. スキーマを再インポートして、新しいデータベースを作成します
  4. 元のデータベースをソースとして使用してデータをリロードします

元の質問でそれを「面倒なプロセス」として却下しました-しかし、実際にそのように言っても、それほど悪くはありません;)
スティーブンリード

4

フィールドを並べ替えるには、レイヤーおよびテーブルビューツールセットからMakeTableQueryを実行する必要があります。ドキュメントから、フィールドリストのフィールドの順序は、フィールドが出力レイヤーまたはテーブルビューに表示される順序を示しています。また、Shape列がフィールドリストに追加されると、結果はレイヤーになります。それ以外の場合は、テーブルビューです。これは、すべてのライセンスレベルで利用可能です。


[クエリテーブルの作成(Make Query Table)]ツールでフィールドを並べ替える方法がわからないため、これをテストしたかどうか疑問に思います。ツールダイアログでは、フィールドを含めるかどうかを決定できるだけです。
PolyGeo

はい、Pythonスクリプトからこれをテストしました。このツールは、複数のテーブルを結合または結合するように設計されているようです。ただし、単一のフィーチャクラスを入力することで、フィールドを並べ替えた新しいテーブルまたはフィーチャクラスを作成できます。
-klewis

私は何かを逃しているはずなので、ここに新しい質問を投稿しましたgis.stackexchange.com/questions/32310/…-おそらく私のためにそこの手順を詳しく教えてもらえますか?
PolyGeo

MakeQueryTableだけでなく、CopyFeaturesと、PythonウィンドウにCopy As Python Snippetを使用して得たコードの若干の編集を使用して、新しい質問に答えました。
PolyGeo

4

マージツールは、簡単に再注文のフィールドを永続的にすることができます。テーブルとフィーチャクラスで機能します。並べ替えは、Pythonスクリプトを介して行うことも、[ツール]ダイアログを使用して行うこともできます(フィールドを削除して、ダイアログで再度追加することにより)。ダイアログを介した並べ替えは完璧なアプローチではありませんが。

マージツールを1回使用してから、[ Pythonスニペットとしてコピー]を使用し、フィールドの順序を手動で変更してから、PythonウィンドウにPythonコードを貼り付けることをお勧めします。

マージツールを使用してフィールドを並べ替えるPythonスクリプトを次に示します(ここからコピーします

import arcpy

def reorder_fields(table, out_table, field_order, add_missing=True):
    """ 
    Reorders fields in input featureclass/table
    :table:         input table (fc, table, layer, etc)
    :out_table:     output table (fc, table, layer, etc)
    :field_order:   order of fields (objectid, shape not necessary)
    :add_missing:   add missing fields to end if True (leave out if False)
    -> path to output table
    """
    existing_fields = arcpy.ListFields(table)
    existing_field_names = [field.name for field in existing_fields]

    existing_mapping = arcpy.FieldMappings()
    existing_mapping.addTable(table)

    new_mapping = arcpy.FieldMappings()

    def add_mapping(field_name):
        mapping_index = existing_mapping.findFieldMapIndex(field_name)

        # required fields (OBJECTID, etc) will not be in existing mappings
        # they are added automatically
        if mapping_index != -1:
            field_map = existing_mapping.fieldMappings[mapping_index]
            new_mapping.addFieldMap(field_map)

    # add user fields from field_order
    for field_name in field_order:
        if field_name not in existing_field_names:
            raise Exception("Field: {0} not in {1}".format(field_name, table))

        add_mapping(field_name)

    # add missing fields at end
    if add_missing:
        missing_fields = [f for f in existing_field_names if f not in field_order]
        for field_name in missing_fields:
            add_mapping(field_name)

    # use merge with single input just to use new field_mappings
    arcpy.Merge_management(table, out_table, new_mapping)
    return out_table

使用法:

new_field_order = ["field2", "field3", "field1"]
reorder_fields(in_fc, out_fc, new_field_order)

これは、最後に移動したいフィールドを最初に削除し、新しいフィールドを追加してから[入力フィールドの追加]を行ったツールダイアログではうまく機能しているようです。ただし、あなたが言ったように、より複雑な並べ替えが必要な場合、Pythonで使用する方がツールを使用するよりも簡単です。
PolyGeo

3

X線と呼ばれるEsriからの無料の拡張機能があり、フィールドを並べ替えるためのツールが含まれています。私たちにとってはうまく機能し、使いやすいです。

ArcCatalogのX-Rayアドインを使用して、ジオデータベースデザインを開発、改良、およびドキュメント化できます。


GIS Stack Exchangeへようこそ。ヒントをありがとう。Stack Exchangeの標準にさらに合うように回答を再フォーマットしました。製品に関するリンクと引用文を含め、余分な情報を削除しました。
スティーブンリード

2

これまでのところ、フィールドの名前を変更し、デフォルトの順序を変更するために見つけた最も効率的な方法は、Microsoft Accessを使用することです。

  1. 新しいパーソナルジオデータベースを作成する
  2. フィーチャクラスまたはテーブルをp-gdbにドラッグアンドドロップします
  3. Accessで開いて:
    • 開始するすべてのテーブルを無視しGDB_、テーブルデザインモードでテーブルを開きます
    • 名前の変更、順序の変更、新規追加など。
  4. 実際の操作可能なgdbにドラッグアンドドロップで戻る

ノート:

常に最新のバックアップを作成してください。内部のGDB構造を直接いじっており、ArcGISがそれを読み取る方法を認識しないポイントにDBを変更することにより、データを簡単に破棄することができます。

ArcGIS側には、フィールド名に使用できない予約済みキーワードがいくつかあります。Accessはこれらのキーワードを使用してフィールドを作成または名前変更しますが、それらを戻すと自動的にアンダースコアが追加されます。そうCurrentなるCurrent_。また、部分的に重複するAccess予約キーワードもあります。

個人用GDBには2GBのファイルサイズ制限があるため、GDB内のすべてのテーブルとフィーチャクラスの合計サイズはそれを超えることはできません。

小さなプロジェクト(2 GB未満)には常に個人用GDBを使用するのは魅力的かもしれません。しないでください。パフォーマンスはひどく、AccessのSQL構文には微妙な違いがあり、ラベル式、定義クエリなどを移植不可能にします。


もちろん、この方法は公式には認可されていません。何か問題が発生した場合、テクニカルサポートに連絡することはできません;)
スティーブンリード14


2

このPythonスクリプトは、これを行うための一種の「ダクトテープ」メソッドです。20個のフィールドに制限されていますが、データの多くのフィールドに対して実行できるように簡単に追加できます。

スクリプトはスクリプトツールとして実行されるように設計されているため、ArcCatalog内でパラメーターを設定する必要があります。

パラメータは次のようになります。

  • InputFC-フィーチャクラス
  • 出力場所-ワークスペース
  • 出力名-ストリング
  • Field1-フィールド
  • Field2-フィールド
  • Field20までずっと

コード:

import arcpy, os, sys
from arcpy import env

arcpy.env.overwriteOutput = True

inFC = arcpy.GetParameterAsText(0)
outLoc = arcpy.GetParameterAsText(1)
outName = arcpy.GetParameterAsText(2)
field1 = arcpy.GetParameterAsText(3)
field2 = arcpy.GetParameterAsText(4)
field3 = arcpy.GetParameterAsText(5)
field4 = arcpy.GetParameterAsText(6)
field5 = arcpy.GetParameterAsText(7)
field6 = arcpy.GetParameterAsText(8)
field7 = arcpy.GetParameterAsText(9)
field8 = arcpy.GetParameterAsText(10)
field9 = arcpy.GetParameterAsText(11)
field10 = arcpy.GetParameterAsText(12)
field11 = arcpy.GetParameterAsText(13)
field12 = arcpy.GetParameterAsText(14)
field13 = arcpy.GetParameterAsText(15)
field14 = arcpy.GetParameterAsText(16)
field15 = arcpy.GetParameterAsText(17)
field16 = arcpy.GetParameterAsText(18)
field17 = arcpy.GetParameterAsText(19)
field18 = arcpy.GetParameterAsText(20)
field19 = arcpy.GetParameterAsText(21)
field20 = arcpy.GetParameterAsText(22)

fieldList = ["SHAPE@"]

arcpy.AddMessage(" ")

arcpy.AddMessage("Appending field choices to new List ")

arcpy.AddMessage(" ")

if (field1 != ""):
    fieldList.append(field1)
if (field2 != ""):
    fieldList.append(field2)
if (field3 != ""):
    fieldList.append(field3)
if (field4 != ""):
    fieldList.append(field4)
if (field5 != ""):
    fieldList.append(field5)
if (field6 != ""):
    fieldList.append(field6)
if (field7 != ""):
    fieldList.append(field7)
if (field8 != ""):
    fieldList.append(field8)
if (field9 != ""):
    fieldList.append(field9)
if (field10 != ""):
    fieldList.append(field10)
if (field11 != ""):
    fieldList.append(field1)
if (field12 != ""):
    fieldList.append(field12)
if (field13 != ""):
    fieldList.append(field13)
if (field14 != ""):
    fieldList.append(field14)
if (field15 != ""):
    fieldList.append(field15)
if (field16 != ""):
    fieldList.append(field16)
if (field17 != ""):
    fieldList.append(field17)
if (field18 != ""):
    fieldList.append(field18)
if (field19 != ""):
    fieldList.append(field19)
if (field20 != ""):
    fieldList.append(field20)

arcpy.AddMessage(" ")

#arcpy.AddMessage(fieldList)

oldFieldList = arcpy.ListFields(inFC)

fieldTypes = []

numOfFields = len(fieldList)

fieldIndex = 1

reorderedFields = []

for fld in fieldList:
    for f in oldFieldList:
        if f.name == fld:
            arcpy.AddMessage(f.name)
            reorderedFields.append(f)
            break

arcpy.AddMessage(" ")

arcpy.AddMessage(reorderedFields)

desc = arcpy.Describe(inFC)
geoType = desc.shapeType.upper()
spatRef = arcpy.Describe(inFC).spatialReference

arcpy.CreateFeatureclass_management(outLoc, outName, geoType, "", "", "", spatRef)
newFeat = os.path.join(outLoc, outName)

for flds in reorderedFields:
    if (flds.type == "String"):
        fLength = flds.length
        arcpy.AddField_management(newFeat, flds.name, flds.type, "", "", str(fLength))
    else:
        arcpy.AddField_management(newFeat, flds.name, flds.type)

arcpy.AddMessage(" ")

arcpy.AddMessage(fieldList)

arcpy.AddMessage(" ")

arcpy.AddMessage("Features will be copied with new Schema...")

count = 0

with arcpy.da.SearchCursor(inFC, fieldList) as cursor:
    for row in cursor:
        insertCursor = arcpy.da.InsertCursor(newFeat, (fieldList))
        if (numOfFields == 21):
            insertCursor.insertRow((row[0], row[1], row[2], row[3], row[4], row[5], row[6], row[7], row[8], row[9], row[10], row[11], row[12], row[13], row[14], row[15], row[16], row[17], row[18], row[19], row[20]))
            arcpy.AddMessage(" ")
            arcpy.AddMessage("Index: " + str(count) + " -----> " + str(row[1]) + ', ' + str(row[2]) + ', ' + str(row[3]) + ', ' + str(row[4]) + ', ' + str(row[5]) + ', ' + str(row[6]) + ', ' + str(row[7]) + ', ' + str(row[8]) + ', ' + str(row[9]) + ', ' + str(row[10]) + ', ' + str(row[11]) + ', ' + str(row[12]) + ', ' + str(row[13]) + ', ' + str(row[14]) + ', ' + str(row[15]) + ', ' + str(row[16]) + ', ' + str(row[17]) + ', ' + str(row[18]) + ', ' + str(row[19]) + ', ' + str(row[20]))
            count += 1
        elif (numOfFields == 20):
            insertCursor.insertRow((row[0], row[1], row[2], row[3], row[4], row[5], row[6], row[7], row[8], row[9], row[10], row[11], row[12], row[13], row[14], row[15], row[16], row[17], row[18], row[19]))
            arcpy.AddMessage(" ")
            arcpy.AddMessage("Index: " + str(count) + " -----> " + str(row[1]) + ', ' + str(row[2]) + ', ' + str(row[3]) + ', ' + str(row[4]) + ', ' + str(row[5]) + ', ' + str(row[6]) + ', ' + str(row[7]) + ', ' + str(row[8]) + ', ' + str(row[9]) + ', ' + str(row[10]) + ', ' + str(row[11]) + ', ' + str(row[12]) + ', ' + str(row[13]) + ', ' + str(row[14]) + ', ' + str(row[15]) + ', ' + str(row[16]) + ', ' + str(row[17]) + ', ' + str(row[18]) + ', ' + str(row[19]))
            count += 1
        elif (numOfFields == 19):
            insertCursor.insertRow((row[0], row[1], row[2], row[3], row[4], row[5], row[6], row[7], row[8], row[9], row[10], row[11], row[12], row[13], row[14], row[15], row[16], row[17], row[18]))
            arcpy.AddMessage(" ")
            arcpy.AddMessage("Index: " + str(count) + " -----> " + str(row[1]) + ', ' + str(row[2]) + ', ' + str(row[3]) + ', ' + str(row[4]) + ', ' + str(row[5]) + ', ' + str(row[6]) + ', ' + str(row[7]) + ', ' + str(row[8]) + ', ' + str(row[9]) + ', ' + str(row[10]) + ', ' + str(row[11]) + ', ' + str(row[12]) + ', ' + str(row[13]) + ', ' + str(row[14]) + ', ' + str(row[15]) + ', ' + str(row[16]) + ', ' + str(row[17]) + ', ' + str(row[18]))
            count += 1
        elif (numOfFields == 18):
            insertCursor.insertRow((row[0], row[1], row[2], row[3], row[4], row[5], row[6], row[7], row[8], row[9], row[10], row[11], row[12], row[13], row[14], row[15], row[16], row[17]))
            arcpy.AddMessage(" ")
            arcpy.AddMessage("Index: " + str(count) + " -----> " + str(row[1]) + ', ' + str(row[2]) + ', ' + str(row[3]) + ', ' + str(row[4]) + ', ' + str(row[5]) + ', ' + str(row[6]) + ', ' + str(row[7]) + ', ' + str(row[8]) + ', ' + str(row[9]) + ', ' + str(row[10]) + ', ' + str(row[11]) + ', ' + str(row[12]) + ', ' + str(row[13]) + ', ' + str(row[14]) + ', ' + str(row[15]) + ', ' + str(row[16]) + ', ' + str(row[17]))
            count += 1
        elif (numOfFields == 17):
            insertCursor.insertRow((row[0], row[1], row[2], row[3], row[4], row[5], row[6], row[7], row[8], row[9], row[10], row[11], row[12], row[13], row[14], row[15], row[16]))
            arcpy.AddMessage(" ")
            arcpy.AddMessage("Index: " + str(count) + " -----> " + str(row[1]) + ', ' + str(row[2]) + ', ' + str(row[3]) + ', ' + str(row[4]) + ', ' + str(row[5]) + ', ' + str(row[6]) + ', ' + str(row[7]) + ', ' + str(row[8]) + ', ' + str(row[9]) + ', ' + str(row[10]) + ', ' + str(row[11]) + ', ' + str(row[12]) + ', ' + str(row[13]) + ', ' + str(row[14]) + ', ' + str(row[15]) + ', ' + str(row[16]))
            count += 1
        elif (numOfFields == 16):
            insertCursor.insertRow((row[0], row[1], row[2], row[3], row[4], row[5], row[6], row[7], row[8], row[9], row[10], row[11], row[12], row[13], row[14], row[15]))
            arcpy.AddMessage(" ")
            arcpy.AddMessage("Index: " + str(count) + " -----> " + str(row[1]) + ', ' + str(row[2]) + ', ' + str(row[3]) + ', ' + str(row[4]) + ', ' + str(row[5]) + ', ' + str(row[6]) + ', ' + str(row[7]) + ', ' + str(row[8]) + ', ' + str(row[9]) + ', ' + str(row[10]) + ', ' + str(row[11]) + ', ' + str(row[12]) + ', ' + str(row[13]) + ', ' + str(row[14]) + ', ' + str(row[15]))
            count += 1
        elif (numOfFields == 15):
            insertCursor.insertRow((row[0], row[1], row[2], row[3], row[4], row[5], row[6], row[7], row[8], row[9], row[10], row[11], row[12], row[13], row[14]))
            arcpy.AddMessage(" ")
            arcpy.AddMessage("Index: " + str(count) + " -----> " + str(row[1]) + ', ' + str(row[2]) + ', ' + str(row[3]) + ', ' + str(row[4]) + ', ' + str(row[5]) + ', ' + str(row[6]) + ', ' + str(row[7]) + ', ' + str(row[8]) + ', ' + str(row[9]) + ', ' + str(row[10]) + ', ' + str(row[11]) + ', ' + str(row[12]) + ', ' + str(row[13]) + ', ' + str(row[14]))
            count += 1
        elif (numOfFields == 14):
            insertCursor.insertRow((row[0], row[1], row[2], row[3], row[4], row[5], row[6], row[7], row[8], row[9], row[10], row[11], row[12], row[13]))
            arcpy.AddMessage(" ")
            arcpy.AddMessage("Index: " + str(count) + " -----> " + str(row[1]) + ', ' + str(row[2]) + ', ' + str(row[3]) + ', ' + str(row[4]) + ', ' + str(row[5]) + ', ' + str(row[6]) + ', ' + str(row[7]) + ', ' + str(row[8]) + ', ' + str(row[9]) + ', ' + str(row[10]) + ', ' + str(row[11]) + ', ' + str(row[12]) + ', ' + str(row[13]))
            count += 1
        elif (numOfFields == 13):
            insertCursor.insertRow((row[0], row[1], row[2], row[3], row[4], row[5], row[6], row[7], row[8], row[9], row[10], row[11], row[12]))
            arcpy.AddMessage(" ")
            arcpy.AddMessage("Index: " + str(count) + " -----> " + str(row[1]) + ', ' + str(row[2]) + ', ' + str(row[3]) + ', ' + str(row[4]) + ', ' + str(row[5]) + ', ' + str(row[6]) + ', ' + str(row[7]) + ', ' + str(row[8]) + ', ' + str(row[9]) + ', ' + str(row[10]) + ', ' + str(row[11]) + ', ' + str(row[12]))
            count += 1
        elif (numOfFields == 12):
            insertCursor.insertRow((row[0], row[1], row[2], row[3], row[4], row[5], row[6], row[7], row[8], row[9], row[10], row[11]))
            arcpy.AddMessage(" ")
            arcpy.AddMessage("Index: " + str(count) + " -----> " + str(row[1]) + ', ' + str(row[2]) + ', ' + str(row[3]) + ', ' + str(row[4]) + ', ' + str(row[5]) + ', ' + str(row[6]) + ', ' + str(row[7]) + ', ' + str(row[8]) + ', ' + str(row[9]) + ', ' + str(row[10]) + ', ' + str(row[11]))
            count += 1
        elif (numOfFields == 11):
            insertCursor.insertRow((row[0], row[1], row[2], row[3], row[4], row[5], row[6], row[7], row[8], row[9], row[10]))
            arcpy.AddMessage(" ")
            arcpy.AddMessage("Index: " + str(count) + " -----> " + str(row[1]) + ', ' + str(row[2]) + ', ' + str(row[3]) + ', ' + str(row[4]) + ', ' + str(row[5]) + ', ' + str(row[6]) + ', ' + str(row[7]) + ', ' + str(row[8]) + ', ' + str(row[9]) + ', ' + str(row[10]))
            count += 1
        elif (numOfFields == 10):
            insertCursor.insertRow((row[0], row[1], row[2], row[3], row[4], row[5], row[6], row[7], row[8], row[9]))
            arcpy.AddMessage(" ")
            arcpy.AddMessage("Index: " + str(count) + " -----> " + str(row[1]) + ', ' + str(row[2]) + ', ' + str(row[3]) + ', ' + str(row[4]) + ', ' + str(row[5]) + ', ' + str(row[6]) + ', ' + str(row[7]) + ', ' + str(row[8]) + ', ' + str(row[9]))
            count += 1
        elif (numOfFields == 9):
            insertCursor.insertRow((row[0], row[1], row[2], row[3], row[4], row[5], row[6], row[7], row[8]))
            arcpy.AddMessage(" ")
            arcpy.AddMessage("Index: " + str(count) + " -----> " + str(row[1]) + ', ' + str(row[2]) + ', ' + str(row[3]) + ', ' + str(row[4]) + ', ' + str(row[5]) + ', ' + str(row[6]) + ', ' + str(row[7]) + ', ' + str(row[8]))
            count += 1
        elif (numOfFields == 8):
            insertCursor.insertRow((row[0], row[1], row[2], row[3], row[4], row[5], row[6], row[7]))
            arcpy.AddMessage(" ")
            arcpy.AddMessage("Index: " + str(count) + " -----> " + str(row[1]) + ', ' + str(row[2]) + ', ' + str(row[3]) + ', ' + str(row[4]) + ', ' + str(row[5]) + ', ' + str(row[6]) + ', ' + str(row[7]))
            count += 1
        elif (numOfFields == 7):
            insertCursor.insertRow((row[0], row[1], row[2], row[3], row[4], row[5], row[6]))
            arcpy.AddMessage(" ")
            arcpy.AddMessage("Index: " + str(count) + " -----> " + str(row[1]) + ', ' + str(row[2]) + ', ' + str(row[3]) + ', ' + str(row[4]) + ', ' + str(row[5]) + ', ' + str(row[6]))
            count += 1
        elif (numOfFields == 6):
            insertCursor.insertRow((row[0], row[1], row[2], row[3], row[4], row[5]))
            arcpy.AddMessage(" ")
            arcpy.AddMessage("Index: " + str(count) + " -----> " + str(row[1]) + ', ' + str(row[2]) + ', ' + str(row[3]) + ', ' + str(row[4]) + ', ' + str(row[5]))
            count += 1
        elif (numOfFields == 5):
            insertCursor.insertRow((row[0], row[1], row[2], row[3], row[4]))
            arcpy.AddMessage(" ")
            arcpy.AddMessage("Index: " + str(count) + " -----> " + str(row[1]) + ', ' + str(row[2]) + ', ' + str(row[3]) + ', ' + str(row[4]))
            count += 1
        elif (numOfFields == 4):
            insertCursor.insertRow((row[0], row[1], row[2], row[3]))
            arcpy.AddMessage(" ")
            arcpy.AddMessage("Index: " + str(count) + " -----> " + str(row[1]) + ', ' + str(row[2]) + ', ' + str(row[3]))
            count += 1
        elif (numOfFields == 3):
            insertCursor.insertRow((row[0], row[1], row[2]))
            arcpy.AddMessage(" ")
            arcpy.AddMessage("Index: " + str(count) + " -----> " + str(row[1]) + ', ' + str(row[2]))
            count += 1
        elif (numOfFields == 2):
            insertCursor.insertRow((row[0], row[1]))
            arcpy.AddMessage(" ")
            arcpy.AddMessage("Index: " + str(count) + " -----> " + str(row[1]))
            count += 1

私はこれがこれを行うための最もきれいなまたは最も効率的な方法ではないことを理解していますが、実際には非常にうまく機能し、書くのに約30分しかかかりませんでした。フィールドを並べ替える必要がある場合は常にこれを使用しますが、DiagrammerやMicrosoft Accessは必要ありません。もちろん、フィールドの最大数が問題になる可能性がありますが、これもスクリプト内でカスタマイズできます。

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