CSV データのモデリング
CData Python Connector for CSV は、ワイヤプロトコルを介した接続からテーブルをモデル化するまでの、ローカルおよびリモートのCSV データの処理の複雑さを隠します。ただし、これらのレイヤーを制御することもできます。
自動スキーマ検出のカスタマイズ
本製品 は、指定された接続プロパティに基づいてCSV からスキーマを動的に派生します。利用可能な接続プロパティを使用すると、データがテーブルとしてモデル化される方法のさまざまな側面を制御できます。接続の設定について詳しくは、CSV データソースへの接続 を参照してください。ローカルCSV で作業する場合は、Microsoft Jet ドライバーで使用される構成であるSchema.ini を使用して、カラム定義とファイル形式を設定することもできます。
レポートされたカラムや、データをテーブルとしてモデル化するその他の側面をより細かく制御するために、独自のスキーマを定義するか生成されたスキーマを拡張することができます。スキーマは、拡張可能なコンフィギュレーションファイルで定義されます。検出されたスキーマを設定ファイルに保存するには、スキーマファイルの生成 を参照してください。このファイルは簡単に編集できます。
次のセクションでは、スキーマをカスタマイズする方法やゼロから記述する方法について説明します。
カスタムスキーマのオーサリング
テーブルとビューは、API Script でスキーマファイルを作成することによって定義されます。API Script は、テーブルのカラムとその動作を定義するシンプルなAPI Script コンフィギュレーション言語にて書かれています。また、CSV を処理可能にするビルトインオペレーションがあります。
これらのデータ処理構造に加えて、API Script は、条件分岐やループなどに対応して構成されているフル機能の言語です。ただし、サンプルスキーマに示すように、ほとんどのテーブル定義ではこれらの機能を使用する必要はありません。
以下は、一般的なNorthwind サンプルデータベースのPerson エンティティをモデル化した、完全な機能を持つテーブルスキーマです。これには、SQL を通じでデータソースにアクセスするために必要なすべてのコンポーネントが含まれています。これらのコンポーネントの詳細は、カラムの定義 およびSELECT 実行 を参照してください。
<api:script>
<!-- See Column Definitions to define column behavior. -->
<api:info title="CSVPersons" desc="Parse the CSV Persons feed.">
<attr name="ID" xs:type="int" key="true" />
<attr name="EmployeeID" xs:type="int" />
<attr name="Name" xs:type="string" />
<attr name="TotalExpense" xs:type="double" />
<attr name="HireDate" xs:type="datetime" />
<attr name="Salary" xs:type="int" />
</api:info>
<api:set attr="uri" value="http://pathtocsvstream" />
<!-- The GET method corresponds to SELECT. The results of processing are pushed to the schema's output. See SELECT Execution for more information. -->
<api:script method="GET" >
<api:call op="csvproviderGet"/>
</api:script>
<!-- Not implemented -->
<api:script method="POST">
<api:call op="csvproviderInsert">
<api:push/>
</api:call>
</api:script>
<!-- Not implemented -->
<api:script method="MERGE">
<api:call op="csvproviderUpdate">
<api:push/>
</api:call>
</api:script>
<!-- Not implemented -->
<api:script method="DELETE">
<api:call op="csvproviderDelete">
<api:push/>
</api:call>
</api:script>
</api:script>