错误捕获LOAD DATA LOCAL INFILE的最佳方法?

时间:2012-05-18 02:26:03

标签: php mysql csv

我是一个MySQL新手,完成了我的webapp的核心代码。代码导入CSV文件(本地),由FileMaker生成并清理,然后保留。

鉴于这将很快进入生产阶段(可能是一个500mb以下的数据库),我很想知道是否有更好的错误检查/捕获我可以做到可能防止问题在路上或收到我的服务器设置警报。我已经阅读了有关临时日志等的内容,我的MySQL管理还没有达到目前的效果。

最基本的代码是:

$m = mysql_connect('localhost', 'mytable', 'mypassword');
$db = 'mydb';
mysql_select_db($db) or die("Import Error - Couldn't select database: " . mysql_error());

$sql = 'load data local infile "inventory.csv"
        into table ibl_account_details_temp fields terminated by ","
        optionally enclosed by "\""
        lines terminated by "\r"
        (store_id, SKU, account, item_number, brand, description, size, category, price, qty, fees)
        ';

echo mysql_query($sql) or die(myqsl_error());

PS编辑:我也想知道这种导入方法是否对SQL注入开放了吗?

1 个答案:

答案 0 :(得分:4)

不幸的是,使用load data infile进行错误处理非常糟糕。我几乎每天都使用它,并且导入到某种临时表中变成了简单的例程,并使用PHP和MySQL的组合来验证导入的内容。有人可以说这是额外的工作,但它的确有一个优点,就是让我完全控制“错误”是什么。简单地说,我用它来尽可能有效地获取原始数据,然后在php脚本中构建我的错误检查和验证规则。