0

POINT()が入っているかは理解しましMySQLたが、この形式が何を意味する のかわかり1 POINT (8.04665153 -44.39902520)ません。次のものがありますCSV

104|104||CURR|N|14102|4428||71816|71816|1|1 POINT (8.04665153 -44.39902520)|

次のクエリを使用CSVしてテーブルにロードしています

LOAD DATA LOCAL INFILE '/data/disc/sad1.csv' INTO TABLE sad1 
FIELDS TERMINATED BY '|' ENCLOSED BY '"' lines terminated by '\n' IGNORE 23 LINES
(@var1, @var2,@var3,@var4,@var5,@var6,@var7,@var8,@var9,@var10,@var11,@var12)
SET `house_number` = @var1,
    `range_low` = @var2,
    `range_high` = @var3,
    `status` = @var4,
    `unofficial_flag` = @var5,
    `rcl_id` = @var6,
    `rna_id` = @var7,
    `alt_id` = @var8,
    `se_row_id` = @var9,
    `id` = @var10,
    `audit_id` = @var11,
    `shape` = GeomFromText(@var12);

私はフィールドを取得NULLしていshapeます。に変更1 POINT (8.04665153 -44.39902520)すると、いくつかのデータが入力されます。上記のデータPOINT (8.04665153 -44.39902520)の接頭辞はどのように処理すればよいですか?1

4

1 に答える 1

1

1ypur 入力データのこのプレフィックスが何を意味するのかわかりません。SFA パート 1 標準のセクション 7 で定義されているように、ジオメトリの well-known テキスト表現には、このような接頭辞は含まれていません。この数字は、機能の数を示している可能性があります。または、その標準のセクション 8.2.3 の表 7 で指定されているように、ポイント タイプの整数コードを示す場合もあります。

いずれにせよ、プレフィックスが1すべてのケースにあり、入力 csv データの作成者がその値の意味について追加の詳細を提供しない限り、最善の策はこれらのプレフィックスを単に削除することです。CSV の前処理フェーズを使用して、ドキュメント全体を代用することPOINTもできます。1 POINTテキスト列のどこかで誤ってオカレンスを置き換えてしまう可能性がほとんどありません。

安全を確保したい場合、または余分な手順を避けたい場合は、次のような式を使用して SQL クエリを変更することもできます。

`shape` = GeomFromText(IF(@var12 LIKE '1 POINT%', SUBSTRING(@var12, 3), @var12))

これにより、対応する列が で始まるかどうかがチェックされ1 POINT、そうであれば、列テキストから最初の 2 文字が省略されます。

于 2012-11-11T09:05:18.803 に答える