我有一个超过23,000行的MySQL表,以及远程位置的部分副本(不同列数)。在过去的几个月中,已经更新了数百行的地址更改,我需要将这些更新复制到远程副本。我有" adminer"可用,但由于列数不同,因此不允许导入。我没有对远程站点上的数据库的完全访问权限,因此使用LOADFILE和REPLACE选项很难(如果不是不可能)。在这种情况下我有什么选择?
答案 0 :(得分:0)
更好的解决方案是,删除该表和&将实时表数据导入远程位置。
如果您不想导入,请在远程表中添加新列。从现场表转储。在任何文本编辑器中打开它。选择新更改的插入查询&运行它的mysql命令行。它将插入数据。
PS:为了将来避免它,请开始复制Table。实时表中的所有新更改将自动反映在远程表中。
答案 1 :(得分:0)
如果我们可以从本地方框连接到远程MySQL服务器。
mysql -h remote_host ...
然后我们可以使用LOAD DATA LOCAL INFILE
语句从本地系统读取文件,并将REPLACE
读入远程表。
我们只需要将本地表提取为适合LOAD DATA语句的格式的文件。
一点都不清楚可用的访问权限。我们所知道的是你没有“完全访问”,我们不知道这意味着什么。
另一种方法是使用所有列创建表的新副本(到远程MySQL服务器上的不同数据库中)。使用mysqldump将CREATE TABLE和INSERT语句解压缩到.sql文件中,然后执行连接到远程MySQL服务器的.sql(来自我们的本地客户端)。
如果存在PRIMARY KEY约束或UNIQUE索引,我们可以使用SQL语句从完整表中刷新较少列的表。
INSERT IGNORE ...
UPDATE target t JOIN source s ON ... SET t.foo = s.foo ...
或
INSERT INTO target ( ... )
SELECT ...
FROM source
ON DUPLICATE KEY
UPDATE foo = VALUES(foo)