Php 使用前验证SQL文件
我使用php代码将.sql文件导入mysql数据库。代码要做的第一件事是检查文件,如果文件存在,则删除几个表并导入sql文件(替换删除的表)。可以想象,有一次sql文件无效,但代码继续前进并删除了表。有没有一种方法可以使用php验证sql文件的有效性 出于几个原因,这需要一定程度的自动化。我不总是做进口。导入后,代码立即使用新表更新/创建/删除其他表中的记录。所以我不能有一个工作流,我停止这个过程来检查它是否成功;我需要一种php验证成功的方法 这是用于导入sql文件的代码:Php 使用前验证SQL文件,php,mysql,Php,Mysql,我使用php代码将.sql文件导入mysql数据库。代码要做的第一件事是检查文件,如果文件存在,则删除几个表并导入sql文件(替换删除的表)。可以想象,有一次sql文件无效,但代码继续前进并删除了表。有没有一种方法可以使用php验证sql文件的有效性 出于几个原因,这需要一定程度的自动化。我不总是做进口。导入后,代码立即使用新表更新/创建/删除其他表中的记录。所以我不能有一个工作流,我停止这个过程来检查它是否成功;我需要一种php验证成功的方法 这是用于导入sql文件的代码: $templine
$templine = '';
$lines = file($filename);
foreach ($lines as $line) {
if (substr($line, 0, 2) == '--' || $line == '') continue;
$templine .= $line;
if (substr(trim($line), -1, 1) == ';') {
$wpdb->query($templine);
$templine = '';
}
}
有趣。我可以想出两种方法 一种方法是使用另一个数据库作为测试,连接到该数据库,首先将sql导入该数据库,验证它是否与查询一起工作。若通过,那个么连接到主数据库并照常进行 另一种方法是将现有数据库导出到sql文件中。导入sql文件后,请验证它是否与查询一起工作,如果不工作,请使用导出的sql文件导入旧数据库
所有这些都可以在一个步骤中自动运行。而不是先删除表,您不能尝试使用其他名称创建新表吗?如果成功,请删除并重命名,否则文件将损坏。谢谢您的建议。我已经更新了我的问题,包括为什么这对我目前的情况不起作用。@ModusPonen你可以不停地手动检查就完成他的建议和我的建议。让代码对您希望存在的一行或多行执行查询,并根据结果让代码相应地响应是的,我喜欢重命名方法。我可以重命名表,导入,检查它们是否存在,然后从那里开始。我想可能有一些神奇的函数可以验证sql文件或其他东西的有效性,但这很好。谢谢。这是用于导入sql文件的代码。该代码非常幼稚,这可能有助于您的稳定性。它无法正确处理大量完全有效的SQL。至少应修改它,以允许在
--
之前或之后的行上出现游离的空白字符代码>尝试将每行上下文化时。要正确执行此操作,消除此代码对有效SQL的潜在错误以及它无法把握的细微差别,您确实需要SQL标记器库的服务。这与此建议和j08691的建议一起工作,重命名表,执行导入,然后检查新表是否存在,如果良好,删除重命名的表,如果不好,删除导入过程中创建的任何新表,然后将旧表重命名回原来的状态。谢谢