【发布时间】:2015-07-30 15:17:07
【问题描述】:
我正在尝试导入巨大的 csv 文件,而不必将它们拆分并使用 phpmyadmin。
这是我的 csv 格式的示例(有些字段有“”,有些没有)我查看了所有其他堆栈溢出答案,但似乎没有我的情况,有些字段有语音标记,有些没有。
这是我的 csv 示例,第一行作为列名:
aw_product_id,merchant_product_id,merchant_category,aw_deep_link,merchant_image_url,search_price,description,product_name,merchant_deep_link,aw_image_url,merchant_name,merchant_id,category_name,category_id,delivery_cost,currency,store_price,display_price,data_feed_id,web_offer,brand_name
3156121231,462496,/cycle/clothing/ladies/gloves,http://www.awin1.com/pclick.php?p=3156121231&a=117981&m=2485,http://products.activinstinct.com/y2014/m09/462496/14723969-n.jpg,33.49,"A close fitting fully waterproof glove with ProGel palm padding for better cushioning on the handlebars.Features:*Waterproof, windproof, breathable construction*ProGel palm padding*Cuff adjuster for precise fitting*Critically positioned reflective trims","ALTURA ProGel Waterproof Ladies Gloves",http://www.activinstinct.com/cycle/clothing/ladies/gloves/altura-progel-waterproof-ladies-gloves/,http://images.productserve.com/preview/5/2485/31/12/3156121231.jpg,ActivInstinct,2485,"Women's Accessories",149,3.95,GBP,,GBP33.49,2485,0,Altura
到目前为止,这是我的 php:
$pdo = new PDO($dsn, $user, $password, array(PDO::MYSQL_ATTR_LOCAL_INFILE=>1));
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$pdo->exec("LOAD DATA LOCAL INFILE 'example.csv'
INTO TABLE products
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
ESCAPED BY '\'
LINES TERMINATED BY '\r\n'
IGNORE 1 LINES
(aw_product_id,merchant_product_id,merchant_category,aw_deep_link,merchant_image_url,search_price,description,product_name,merchant_deep_link,aw_image_url,merchant_name,merchant_id,category_name,category_id,delivery_cost,currency,store_price,display_price,data_feed_id,web_offer,brand_name);");
除非我删除由 " 括起来的内容,否则它会出错。删除后,它会提交大的 csv,但格式错误并且字段被放入错误的列中。
任何帮助将不胜感激,我确信它是一件小而愚蠢的事情,但这已经困扰我好几天了!
提前致谢!
【问题讨论】:
-
关于导入数据的实际问题是什么?你根本没有解释你的问题。
-
抱歉在我完成问题之前提交的表格
-
您能否输出带有保证每个值的双引号的 CSV 文件?然后您可以删除“可选”,您的数据将在所有行中更加标准。
-
CSV 来自附属窗口,我希望最终自动化该过程,因此不确定这是否可能。如果我通过 phpmyadmin 上传较小的文件,它工作正常
-
你能为你的数据库提供 CREATE 语句吗?