Mysql 加载本地数据填充的变通方法?

Mysql 加载本地数据填充的变通方法?,mysql,Mysql,我的web主机已升级其服务器。他们安装的较新的5.7.27版本MySQL在默认情况下禁用了LOAD DATA LOCAL Infle,在我尝试执行该命令时导致错误1148。不幸的是,我无法启动或停止MySQL实例,因为它在web主机的控制下。有哪些变通方法或替代方法可以让我以最少的工作量导入数据?我要导入的所有数据当前都是TSV制表符分隔值格式,但如果需要,我可以切换到CSV或其他格式。如果有帮助的话,我也安装了Workbench 问题基本上与相同,只是我无法访问和重新配置服务器,无法找到该问题

我的web主机已升级其服务器。他们安装的较新的5.7.27版本MySQL在默认情况下禁用了LOAD DATA LOCAL Infle,在我尝试执行该命令时导致错误1148。不幸的是,我无法启动或停止MySQL实例,因为它在web主机的控制下。有哪些变通方法或替代方法可以让我以最少的工作量导入数据?我要导入的所有数据当前都是TSV制表符分隔值格式,但如果需要,我可以切换到CSV或其他格式。如果有帮助的话,我也安装了Workbench


问题基本上与相同,只是我无法访问和重新配置服务器,无法找到该问题的所选答案。

我将编写一个Python脚本来获取TSV输入,并使用它在循环中生成INSERT语句。每个语句可能处理100-200*个新行。然后它将执行这些语句

在同一台服务器上运行它。在事务中执行此操作,以便在出现错误时不会在最初的几次尝试中造成混乱

这就是TSV导入


*或者,不管你想要什么。一次执行一个会很慢,因为每个SQL语句的执行都会带来很小的开销,但是除非信息量很小,否则您可能无法将它们全部转储到一个INSERT中。检查您的服务器设置/限制,并为您的用例提供合理的批处理大小。你为什么不跟你的主人谈谈,让他们改变一下设置呢?你知道,有一个对话吗?他们很高兴能在之前启用它。现在,为了同样的钱,它被禁用了。你是顾客。跟他们谈谈!他们甚至可能没有意识到新版本中默认设置的改变。我投票结束这个问题,因为它不是关于编程或代码,而是关于你与网络托管公司的关系。如果软件功能现在被禁用,则没有解决方法-您必须与主机通信并将其解决。您对加载代码的请求太广泛,无法在主题上实现。您可以使用google来帮助您。未禁用表示已启用。@LightnessRacesBY-SA3.0如果它没有脱离主题,那么它肯定太宽泛了。这不是一个“挥动魔杖”的问题,就是一个“这是我的规格,为我做我的工作”的问题。有成百上千的站点显示加载数据的简单代码。如果OP在加载代码时遇到问题,OP可以询问。100-200行的限制有点不方便。Workbench能提供一些杠杆作用吗?我不熟悉它的所有特性。我相当随意地选择了那个数字。您需要的数量取决于数据量、每行中的信息量、服务器的限制/设置。。。。为什么不方便?这是我以后可能会忘记的另一个变量,导致了巨大的头痛。我已经习惯性地在100行x20列批次中添加数据。大多数列都是整数或NULL,但图形数据也有VARCHAR和TEXT列。@posfan12我不明白。你的脚本怎么会忘记批处理呢?你必须非常努力地使一个程序像我上面展示的那样忘记行/批处理。比如说,你实际上必须用自己的方式来编写代码才能做到这一点。这是相当基本的脚本;我这么说并不是想冒犯你,而是想指出这项任务对于你的电脑来说是多么简单和平常。
batchSize = 100
buffer = []

handleInput():
   for each line in tsvFile:
       data = parse(line)
       add data to buffer
       if size(buffer) > batchSize:
          flushBuffer
   if size(buffer) > batchSize:
      flushBuffer

flushBuffer:
    str = "INSERT INTO tbl (col1, col2, col3) VALUES"
    for each row in buffer:
       if !str.empty():
          str += ","
       str += "(" + row[col1] + ", " + row[col2] + ", " + row[col3];
    executeSqlStatement(str)
    buffer = []