【发布时间】:2021-08-10 10:20:10
【问题描述】:
我需要在 laravel 5.4 中转换以下查询
$loadDataToTempTableSql = "LOAD DATA LOCAL INFILE '".$filename."' INTO TABLE ABC FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '\"' LINES TERMINATED BY '\r' IGNORE 1 LINES";
$loadDataToTempTableRes = mysqli_query($link,$loadDataToTempTableSql);
$loadedData = mysqli_affected_rows($link);
我做了什么
第一步:
DB::select($load_data_to_temp_table_sql);
这是抛出异常:
SQLSTATE[HY000]:一般错误:2014 无法执行查询,而 其他无缓冲查询处于活动状态。考虑使用 PDOStatement::fetchAll()。或者,如果您的代码只是 要针对 mysql 运行,您可以通过设置启用查询缓冲 PDO::MYSQL_ATTR_USE_BUFFERED_QUERY 属性。 (SQL:加载数据 本地文件 '/库/WebServer/Documents/public/abc copy.csv' INTO TABLE ABC FIELDS TERMINATED BY ',' 可选地由 '"' 包围的行由 ' 终止 ' 忽略 1 行)
第二步:
$pdo = DB::connection()->getPdo();
$pdo->exec($load_data_to_temp_table_sql);
再次例外:
PDO::exec(): LOAD DATA LOCAL INFILE 禁止
请指导,怎么办?
【问题讨论】:
标签: laravel-5.4 mysql-5.5