我想知道哪种方法是使用Load Data Local infile的最有效方法。
我有许多使用此功能的php脚本,每个脚本都会将每个供应商的日期输入我的数据库。这些文件位于我的ftp服务器上,该服务器位于我的数据库所在的单独域中(目前它将从我的本地计算机运行这些脚本,但同样的原则适用)。
因此,例如,其中一个脚本为:
$sql = "
LOAD DATA LOCAL INFILE 'ftp://user:pass@domain.com/feeds/feed1.csv'
etc.........
";
所以,我的问题是,它是否会更有效率,我想我的意思是更快,首先将每个csv下载到本地目录并将其用作上述命令中的引用?
答案 0 :(得分:0)
对于加载时间,如果您预先加载脚本或即时运行,只要它们只加载一次,它就没什么区别。当然,保留本地副本是有意义的。
但令我困惑的是:您提供的代码段不保留csv
数据。相反,它(很可能)包含您最有可能包含和评估的php
代码。如果您通过不安全的连接从远程加载文件(读取:'ftp server'等),这当然是有效的,但也非常不安全。如果有人在您的服务器上删除包含rm -fR /
之类的内容的脚本怎么办?我知道Web服务器没有足够的权限,这只是一个例子。动用你的想象力。至少你应该验证你正在加载什么。如果你有数据而不是你评估的代码,这肯定会更容易 。
我建议您使用本地csv
或更好json
或yaml
序列化数据文件,在php
之类的内容中实现验证例程,并将sql server与结果。