更新表的远程副本中的地址

时间:2018-05-18 04:29:21

标签: mysql

我有一个超过23,000行的MySQL表,以及远程位置的部分副本(不同列数)。在过去的几个月中,已经更新了数百行的地址更改,我需要将这些更新复制到远程副本。我有" adminer"可用,但由于列数不同,因此不允许导入。我没有对远程站点上的数据库的完全访问权限,因此使用LOADFILE和REPLACE选项很难(如果不是不可能)。在这种情况下我有什么选择?

2 个答案:

答案 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)