2

我有一个来自佛罗里达州的 CSV 提要,我需要每天将其加载到 MySQL 中。这是我所在地区所有待售房屋的清单。一个字段有一个代码列表,以逗号分隔。这是一个这样的示例:

C02,C11,U01,U02,D02,D32,D45,D67

这些代码都意味着一些东西(游泳池、区域围栏等),我在单独的表格中有含义。我的问题是,我应该如何处理加载这些?我应该像在 CSV 中一样将它们放在自己的字段中吗?我应该创建一个单独的表格来保存它们吗?

如果我确实将它们保留在字段中(称为 feature_codes),我如何从包含描述的表中获取描述?该表只是 feature_code,feature_code_description。我不知道如何在我的第一个查询中将它们分开以进行连接以引入描述。

谢谢

4

4 回答 4

4

作为一般规则,csv 数据不应该存储在字段中,特别是如果您确实需要考虑 csv 数据的各个位,而不仅仅是整个 csv 字符串。

您应该规范化设计并将这些子“字段”中的每一个拆分到自己的表中。

话虽如此,MySQL 确实有find_in_set()允许您对这些 csv 字符串进行排序搜索并将每个字符串视为其自己的不同数据。使用它并不是特别有效,但它确实为设计添加了创可贴。

于 2012-09-24T15:32:06.107 回答
1

您应该将有关特征代码的信息保存在单独的表中,其中每一行是一对房屋标识符和特征标识符

HouseID    FeatureID
1          C07
1          D67
2          D02
于 2012-09-24T15:32:52.013 回答
0

您可以使用explode() 来分隔您的CSV 字符串: http: //php.net/manual/en/function.explode.php

$string = 'C02,C11,U01,U02,D02,D32,D45,D67';
$array  = explode(',', $string);

然后使用您的 feature_codes 列表,您可以轻松检索您的 feature_code_description,但您需要执行另一个查询以获取包含所有 feature_codes 和 feature_code_description 的数组。

或者拆分您的字段并将其放在另一个带有 home_id 的表中。

于 2012-09-24T15:33:32.300 回答
0

您可以将它按原样保存在数据库中,当您读出它时,您可以运行 php 函数explode。去检查那个功能。它会为你构建一个数组,用一个字符串来分隔你想要的值。在您的情况下,您可以使用:

$array_of_codes = explode(",", $db_return_string);

这将由每个代码组成一个数组,用它们之间的逗号分隔它们。祝你好运。

于 2012-09-24T15:34:35.317 回答