繁体   English   中英

MySQL通过LOAD DATA INFILE从CSV文件导入数据不起作用

[英]MySQL import data from a csv file via LOAD DATA INFILE does not work

我非常努力地使此命令起作用。 没事 这是我的问题:

我有一个.csv文件,该文件要上传到服务器上,我要在该服务器上运行脚本以将所有数据导入到MySQL表中。 csv看起来像这样:

id;herstellernr;hersteller;firmenname;url
123;ABC;Hersteller1;Firmenname1;http://www.test.com
234;DEF;Hersteller2;Firmenname2;http://www.test2.de
345;GHI;Hersteller3;Firmenname3;http://www.test3.net

... 等等。

上载csv文件后,我首先要创建一个新表(临时表),在该表中应导入我的数据。 创建表的过程没有任何问题; 没有从csv文件导入我的数据。

这是我的脚本(在上传脚本之后):

$temp = $pdo->prepare("

CREATE TABLE ".$name."
(
   id int(11),
   herstellernr varchar(3),
   hersteller varchar(150),
   firmenname varchar(255),
   url varchar(100),
   PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

LOAD DATA INFILE '_csv/".$filename."' INTO TABLE ".$name."
FIELDS TERMINATED BY ';'
LINES TERMINATED BY '\n'
IGNORE 1 LINES
(id, herstellernr, hersteller, firmenname, url)

");

$temp->execute(array());

CREATE TABLE有效,但是之后我的LOAD DATA INFILE没有任何反应

加:我真的不知道它应该是'\\ n'还是'\\ r \\ n'。 无论如何,这两种情况都不起作用。

我真的很努力,我确定语法是正确的。 但是我做不到。 你能帮我吗? 谢谢

您不能对PDO使用多个查询。 您需要将它们分解为单独的查询。 由于您没有使用绑定参数,因此也可以跳过prepare:

$pdo->query("CREATE TABLE ".$name."
(
   id int(11),
   herstellernr varchar(3),
   hersteller varchar(150),
   firmenname varchar(255),
   url varchar(100),
   PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci");

$pdo->query("LOAD DATA INFILE '_csv/".$filename."' INTO TABLE ".$name."
FIELDS TERMINATED BY ';'
LINES TERMINATED BY '\n'
IGNORE 1 LINES
(id, herstellernr, hersteller, firmenname, url)");

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM