【发布时间】:2016-08-23 18:44:39
【问题描述】:
我正在编写一个脚本,我希望将 8000 多行从一个表传输到另一个数据库中的另一个表,其中包含选定的列。到目前为止,我曾想过使用PDOStatement::fetchAll() 作为$result 数组来获取整个源表的选定列,然后使用PDO::prepare() 方法准备一个mySQL 插入语句作为
INSERT INTO targetTable (targetColumn1,targetColumn2...) VALUES
(sourceRow1ForColumn1,sourceRow1ForColumn2,..),
(sourceRow2ForColumn1,sourceRow2ForColumn2,..),
(sourceRow3ForColumn1,sourceRow3ForColumn2,...),...
但我认为这不是一种有效的方式,应该有一种最佳方式来做我想做的事。有没有更好的方法可以做我想做的事?
【问题讨论】:
-
使用cli导出到.sql文件,替换表名和列名,导入sql?
-
我真的不希望这个过程是手动的,因为非技术人员会使用我正在做的事情。
-
insert into targetTable select * from sourceTable? -
8000 条记录是微不足道的。
fetchAll()来自源表,循环数据,一次插入一个到目标表。时间不应超过 30 秒。如果您尝试使用显示的多插入查询,那么它很容易出错并超出长度限制。 -
我认为这是一个更糟糕的主意。 @MonkeyZeus