0

我需要将制表符分隔的文件加载到 mysql 数据库中。我的数据库设置了以下列:ID;A;B;C;D;E,我的文件是列 ID 和 D 的转储。如何将此文件加载到我的数据库中并仅替换列 ID 和 D更改列 C 和 E 的值。当我现在加载它时,列 C 和 E 更改为 DEFAULT:NULL。

4

3 回答 3

2

我已经在这里回答了类似的问题,但在您的情况下,您希望将 csv 加载到临时表中,然后使用简单的更新 SQL 语句将特定列从临时表更新到生产表。

于 2012-05-15T18:15:30.367 回答
0

您可以使用以下命令更新特定列:

UPDATE the_table
SET D=<value-of-D>
WHERE ID=<value-of-ID>

然后对制表符分隔文件中的每一行运行此命令,替换每个行的 D 和 ID 值。

于 2012-05-15T18:07:40.220 回答
0

您可以使用存储过程或 PHP 程序来完成需要的工作。

对于 MySQL,SP 需要使用load_file()打开文件并将值存储在变量中。然后程序需要通过查找代表新行的“\n”来循环以获取字符串中的整行。

然后程序需要使用locate()找到第一个制表符位置,并使用substring()获取第一个 ID col。然后程序需要使用locate() 及其第三个参数找到第4 个选项卡,即另外3 个选项卡。这将是 D 列的起始位置。然后使用 locate() 及其第三个参数再次找到下一个制表符,这将为您提供 D 列的结束字符。使用 substring() 获取 D 列的内容。使用 update 命令更新行的 D 列,使用 ID 作为 where 子句中的搜索键。

由于上述内容将遍历所有行,因此您将更新所有数据行。

于 2012-05-15T18:26:55.650 回答