我非常努力地使此命令起作用。没事这是我的问题:
我有一个.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'。无论如何,这两种情况都不起作用。
我真的很努力,我确信语法是正确的。但是我做不到。你能帮我吗?谢谢
答案 0 :(得分:2)
您不能对PDO使用多个查询。您需要将它们分解为单独的查询。由于您没有使用绑定参数,因此也可以跳过准备工作:
$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)");