0

我想知道哪种方法是使用 Load Data Local infile 的最有效方法。

我有许多使用此功能的 php 脚本,每个脚本都将来自每个供应商的日期放入我的数据库中。这些文件位于我的 ftp 服务器上,该服务器位于与我的数据库所在的单独域中(目前它将从我的本地计算机上运行这些脚本,但同样的原则适用)。

因此,例如,其中一个脚本如下:

$sql = "
LOAD DATA LOCAL INFILE 'ftp://user:pass@domain.com/feeds/feed1.csv'
etc.........
";

所以,我的问题是,首先将每个 csv 下载到本地目录并将其用作上述命令中的参考会更有效吗?我想我的意思是总体上更快?

4

1 回答 1

0

对于加载时间,如果您预加载脚本或即时加载脚本,只要它们只加载一次,这几乎没有什么区别。否则当然保留本地副本是有意义的。

但令我困惑的是:您提供的那个片段包含csv数据。相反,它(很可能)包含php您最有可能包含和评估的代码。这当然是有效的,但如果您通过不安全的连接从远程加载文件(阅读:'ftp 服务器'等),这也是非常不安全的。如果有人在您的服务器上放置了一个包含类似内容的脚本rm -fR /怎么办?我知道网络服务器对此没有足够的权限,这只是一个例子。动用你的想象力。至少您应该验证您正在加载的内容。如果你有数据而不是你评估的代码,这肯定会容易得多。

我建议您使用本地csv或更好的jsonyaml序列化的数据文件,以类似的方式实现验证例程php并将结果提供给您的 sql 服务器。

于 2013-11-06T10:27:45.410 回答