首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >导入LOAD data INFILE时将我的php变量连接到csv数据

导入LOAD data INFILE时将我的php变量连接到csv数据
EN

Stack Overflow用户
提问于 2019-04-28 07:24:08
回答 1查看 149关注 0票数 -1

我需要将一些csv文件导入mysql。

我最近发现了关于加载数据的INFILE,我检查了手册,据我所知,将.csv文件的每一行导入数据库。

我想知道是否有一个选项可以将额外的值连接到csv文件包含的内容。

例如:我的表有3列。

MYTABLE(#name,#email,company_adrs);

csv文件只有"name,email“的数据,而我在一个php变量中有地址。

使用正常的循环,我将实现如下所示:

代码语言:javascript
复制
//open file
while (/* not end of file, read eachline*/)
{
  $current_line_of_csv_file; // contains: "John,john@john.com" without the 3rd column
  $myAddrsVar= mysqli_real_escape_string($db, $_POST['adrs']); //"44 company st" 
  $insert = $db->query("INSERT MYTABLE (name,email,company_adrs) VALUES ( $current_line_of_csv_file,'".$myAddrsVar."')");

}

使用这种方法,我必须遍历csv的每一行,并在每次迭代中执行一次查询。

我想知道LOAD DATA INFILE是否有将我的数据连接到csv文件的方法?如果是这样,我如何才能实现它?

提前感谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-04-28 08:08:32

考虑到您的情况,我建议使用PHP all-in-all并以这种方式将数据插入到MySQL中。

https://www.php.net/manual/en/function.str-getcsv.php可以帮助您将CSV解析为数组。将地址添加到数组中。现在,您已经拥有了数组中的数据集。

使用准备好的语句,如这里所示的https://websitebeaver.com/prepared-statements-in-php-mysqli-to-prevent-sql-injection,一个接一个地插入数据。

使用事务,以便插入所有数据或不插入任何数据。参见How to start and end transaction in mysqli?

我会避免使用内联加载数据,因为数据量并不是那么大。如果您确实想使用它并添加另一个列,则可以使用SET语句。这里有一个这样的例子:Add extra column of data when using LOAD DATA LOCAL INFILE

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55885701

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档