如何在PHP中为数组的每个元素确定正确的sql数据类型


how to determine the correct sql data type for each element of an array in PHP

我编写了一个PHP类,它从.xls电子表格中获取标题,并使用这些标题作为列名创建一个表。

它还从电子表格中获取每一行数据,并将它们放入数组中。

接下来我要做的是确定行中每列的最佳数据类型。它主要是文本,但也会有数字,比如£1,000,这需要保存为1000,并且是整型而不是字符串。

需要动态完成,因为每个电子表格有不同的列名和不同顺序的数据。

我真的不知道该怎么做,我在想也许每个循环和preg_match都是a ?

我认为您需要检查列中的所有数据,以确定是否有一些非数值(http://ru.php.net/manual/en/function.is-numeric.php)。如果没有非数值数据,可以使用长度合适的INT/TINYINT/MEDIUMINT类型。如果不只是数字数据,可以使用长度合适的CHAR/VARCHAR/BLOG/TEXT。

我要做的是定义我想要的精确程度。例如,如果我发现一列有1和0,我应该将其定义为二进制还是应该将其定义为整数,以防将来会有不同于0和1的数字。

在决定使用哪种数据类型之前,您是否要解析电子表格的所有行或顶部的几行?在上面的例子中,你可能在电子表格的顶部有0和15,但在靠近底部的地方发现其他数字。如果您决定只查看最上面的行,那么您可能希望对数据类型不那么严格。因此,如果您只找到0和1,您可能决定将字段定义为整数,而不是二进制。这将减少导入数据时出错的机会。

你可以使用这样的逻辑:

for each row (and you can decide if you want to check all the rows or just a few)
if is_int() -> data field integer;
if is_float() -> data field is float;
if is_string()
    if it is a date & time -> data field is datetime;
    if it is a date without time -> data field is date;
    else -> data field is varchar.

我希望这对你有帮助。好运。