我必须将以下选择转移到一个表中:
SELECT
o.objektnummer, su.subunternehmernummer,
a.artikelnummer, a.artikel, a.beschreibung,
a.einheit, a.preis_pro_einheit, a.anzahl_parameter, a.p1_einheit, a.p2_einheit, a.p3_einheit,
a.mbs_artikel, a.su_gewerk, a.preis_status,
a.mindermenge_kleiner_als, a.zulage_mindermengen_artikel_nummer
FROM
objekt_artikel oa
INNER JOIN objekt o ON o.id = oa.id_objekt
INNER JOIN artikel a ON a.id = oa.id_artikel
INNER JOIN subunternehmer_objekt suo ON suo.id_objekt = o.id
INNER JOIN subunternehmer su ON su.id = suo.id_subunternehmer
这是插入物:
INSERT INTO objekt_artikel (
id_objekt, id_subunternehmer,
artikelnummer, artikel, beschreibung,
einheit, preis_pro_einheit, anzahl_parameter, p1_einheit, p2_einheit, p3_einheit,
mbs_artikel, su_gewerk, preis_status,
mindermenge_kleiner_als, zulage_mindermengen_artikel_nummer
)
如果我将Limit设置为1000,那么select工作完美且插入可以完成,但select中的表有超过19 000 000行,这会导致服务器崩溃。我现在的想法是,我使用这个选择进行sql-dump,但我认为问题在于我有很多内部联接。
我可以使用此选项将文件输出吗? semikolon seperatet?
答案 0 :(得分:0)
我没有使用1900万行!但是我可以想到一个可以由调用这些SQL语句的人实现的解决方案。我给出下面的伪代码:
for ($start=0, $limit=1000; ; $start += $limit) {
$result = execute("SELECT * FROM $tableName LIMIT $start, $limit");
if ($result) insertToTable($result);
else break;
}