Php MariaDB通过更改文件更新表内容
我有以下问题:Php MariaDB通过更改文件更新表内容,php,database,mariadb,Php,Database,Mariadb,我有以下问题: 我在文本文件中有一个数据集(不是xml或csv编码的文件或其他文件,只是由\t和\n分隔的字段值),它每2分钟更新一次。我需要将文件中的数据放入MariaDB数据库,这本身并不困难。 但是,我不确定的是,如果文件内容发生更改,我将如何更新表。我曾考虑过截断表,然后再次填充,但每2分钟使用1000个数据集进行一次,这意味着在这些更新过程中数据库不完整会出现一些严重问题,这使得它不是一个可用的解决方案(也不会使用更少的数据集:D) 我考虑的另一个解决方案是将新数据附加到现有表中,并在
我在文本文件中有一个数据集(不是xml或csv编码的文件或其他文件,只是由\t和\n分隔的字段值),它每2分钟更新一次。我需要将文件中的数据放入MariaDB数据库,这本身并不困难。
但是,我不确定的是,如果文件内容发生更改,我将如何更新表。我曾考虑过截断表,然后再次填充,但每2分钟使用1000个数据集进行一次,这意味着在这些更新过程中数据库不完整会出现一些严重问题,这使得它不是一个可用的解决方案(也不会使用更少的数据集:D)
我考虑的另一个解决方案是将新数据附加到现有表中,并在唯一列上使用delimter(例如,在更新之前使用cols 1-1000,附加数据,然后在更新之后使用值1001-2000,并删除1-1000,在大约2次更新之后,再次从id 1开始)。
更新更改字段不是一个选项,因为原始数据格式会使跟踪已更改(或未更改)的列变得非常困难
然而,我不确定最佳实践,因为我对SQL和其他东西比较陌生,我想听听你的意见,也许我只是忽略了一些明显的东西…正如Alex所建议的,我将创建一个临时表,将数据插入临时表,截断生产表,然后从临时表插入。工作起来很有魅力 根据Alex的建议,我将创建一个临时表,将数据插入临时表,截断生产表,然后从临时表插入。工作起来很有魅力 更好
CREATE TABLE new LIKE real; -- permanent, not TEMPORARY
load `new` from the incoming data
RENAME TABLE real TO old, new TO real;
DROP TABLE old.
优点:
- 表
对于应用程序来说永远不可见,也不为空real
是“瞬时的”和“原子的”重命名
- 甚至更好
CREATE TABLE new LIKE real; -- permanent, not TEMPORARY
load `new` from the incoming data
RENAME TABLE real TO old, new TO real;
DROP TABLE old.
优点:
- 表
对于应用程序来说永远不可见,也不为空real
是“瞬时的”和“原子的”重命名