【发布时间】:2016-04-03 16:02:28
【问题描述】:
我每 5 分钟将mysqlimport(批处理文件)记录导入到特定表中,以便在我的网站上获取此表中的在线客人。
我目前将在 Windows 批处理文件上执行的 2 个 .sql 发送到远程数据库:1 个 SQL 命令用于删除和创建表,然后是第二个带有 mysqlimport 的 SQL 命令以使用 CSV 填充表。
我想知道是否有更好的方法不是从我的批处理文件中发送mysqlimport 命令,并在插入此特定数据库时在数据库上触发以删除它并在插入新记录之前重新创建它,以便避免在删除表、重新创建表然后填充 CSV 之间当前发生的间隙(无记录),这种情况经常发生。
知道如何实现这样的触发器吗?
online_players 表的结构:
+-------------------+--------------+------+-----+---------+-------+
| Agent | varchar(255) | YES | | NULL | |
| Name | varchar(255) | YES | | NULL | |
| Alias | varchar(255) | YES | | NULL | |
| Begin_Date | varchar(100) | YES | | NULL | |
| LastBalanceUpdate | varchar(100) | YES | | NULL | |
| Session_minutes | varchar(100) | YES | | NULL | |
| Balance | varchar(100) | YES | | NULL | |
| Product | varchar(100) | YES | | NULL | |
+-------------------+--------------+------+-----+---------+-------+
【问题讨论】:
-
您是否为此表定义了唯一键?如果是这样,您应该能够在唯一键上使用
mysqlimport的replace选项,而无需在每次需要重新加载新的 CSV 文件时重新创建表。.. -
不,但我可以设置一个。我知道导入之前存在的行会被替换删除?无需删除表?
-
我终于使用了我不知道的 -d 或 --delete 参数,并在插入之前删除了表中的所有行。感谢您的帮助!
标签: mysql csv sql-insert mysqlimport database-trigger