Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 使用联接表创建SQL转储_Mysql - Fatal编程技术网

Mysql 使用联接表创建SQL转储

Mysql 使用联接表创建SQL转储,mysql,Mysql,我必须将以下select转换为一个表: 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

我必须将以下select转换为一个表:

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中的表有超过1900000行,这会导致服务器崩溃。我现在的想法是,我用这个select生成一个sql转储,但我认为问题在于我有太多的内部连接


我可以将此选择输出到文件吗?与semikolon分开?

我没有处理过1900万行!但我可以想出一个解决方案,无论是谁调用这些SQL语句都可以实现。我给出以下伪代码:

for ($start=0, $limit=1000; ; $start += $limit) {
    $result = execute("SELECT * FROM $tableName LIMIT $start, $limit");
    if ($result) insertToTable($result);
    else break;
}