我必须将以下选择转移到一个表中:
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
)
如果我将限制设置为 1000,那么选择工作完美并且可以完成插入,但是选择的表有超过 19 000 000 行,这使得服务器崩溃。我现在的想法是,我用这个选择创建一个 sql-dump,但我认为问题是我有太多的内部联接。
我可以将此选择输出到文件吗?用分号分隔?
最佳答案
我还没有处理过 1900 万行!但我可以想到一种解决方案,无论谁调用这些 SQL 语句都可以实现。我给出了下面的伪代码:
for ($start=0, $limit=1000; ; $start += $limit) {
$result = execute("SELECT * FROM $tableName LIMIT $start, $limit");
if ($result) insertToTable($result);
else break;
}
关于mysql - 使用连接表创建 SQL 转储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25152726/