mysql - 使用连接表创建 SQL 转储

标签 mysql

我必须将以下选择转移到一个表中:

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/

相关文章:

php - 将多个计数/组查询合并到一个语句中

java - JDBC结果为空时如何返回false

mysql - laravel迁移生成的外键约束的名称是什么

php - 如何将 session 添加到我的表单中?

php - 在数据库中插入 PHP 代码

php - 在 Windows 上使用套接字/路径将 MySQL Workbench 连接到 MAMP

PHP选择具有相同id的不同列

sql - 没有 FULLTEXT 索引的 MySQL 全文搜索

java - 无法从spring项目连接到mysql数据库

java - 如何更改 JDBC 编码以支持法语重音字符