phpMyAdmin SQL Dump - 用于重复" INSERT INTO"的模式线

时间:2017-04-16 20:08:43

标签: mysql phpmyadmin

我想用php PrintWriter模仿phpMyAdmin中的SQL转储功能,到目前为止一切正常,但我没有看到" INSERT INTO"重复。

示例:

INSERT INTO `table` (`value`) VALUES
(0),
(1),
... <-- 975 lines hidden
(977),
(978);
INSERT INTO `table` (`value`) VALUES
(979),
(981),
... <-- 948 lines hidden
(1929),
(1930);
INSERT INTO `table` (`value`) VALUES
(1931),
(1932),
... <-- 963 lines hidden

&#34; INSERT INTO&#34;之间的行数。语句各不相同,但对于不同的表格是相同的。

因为我的表格常规增加,所以我需要确定这些数字在我的代码中实现。

答案

所以,感谢Sloan Thrashers的回答和gitHub上phpMyAdmin的源代码我发现,sql查询的最大长度默认设置为50000。

个人案例中的解决方案:

我使用变量来计算当前查询中到目前为止的字符数,当我达到50000时,我插入一个新的&#34; INSERT INTO&#34;查询。

现在,我的每行生成的Java生成的.sql文件与phpMyAdmin的导出函数中导出的文件完全相同,并将通过比较文件检查。

1 个答案:

答案 0 :(得分:1)

当您在phpAdmin中导出表时,导出的设置之一是每个插入的记录数。因此,当您生成值时循环遍历记录时,您将结束一次插入并在记录计数达到该数字时“重新启动”它。

通常,您可以根据记录大小更改该设置。这不是为了容纳mySQL,如果文件大小太大而无法通过电子邮件或上传等方式允许某人编辑导出,并将其拆分为多个文件。您可能想要拆分文件的另一个原因可能是由于特定mySQL安装中语句大小的限制(很少见)。

在您的情况下,您可以根据记录大小选择一个数字。像您的示例一样的导出可能使用较大的数字(3000 +?),具有大量列的表的导出,或者使用较大的列可能使用较小的数字(50?)。