如何使用PHP将CSV文件读入MySQL

时间:2013-01-05 11:59:34

标签: php mysql csv yahoo-finance

  

可能重复:
  Import CSV file directly into MySQL
  Export CSV from Mysql

我想从我在系统上的CSV文件中读取(C:/xampp/htdocs/live/quotes.csv) 进入我的MySQL表。

我创建了这样的表:

mysql_query("CREATE TABLE IF NOT EXISTS datas(
                                 id int(255) NOT NULL auto_increment,
                                 symbol_t char(6) NOT NULL,
                                 last_trade_price_only_t varchar(100) NOT NULL,
                                 a varchar(30) NOT NULL,
                                 b varchar(30) NOT NULL,
                                 c varchar(30) NOT NULL,
                                 d varchar(30) NOT NULL,
                                 e varchar(30) NOT NULL,
                                 PRIMARY KEY (id) 
)");

现在想在表格中写出这样的:

$location="C:/xampp/htdocs/live/quotes.csv";
$sql = "LOAD DATA LOCAL INFILE '{$location}'
        INTO TABLE '{datas}'
        FIELDS TERMINATED BY ','
        OPTIONALLY ENCLOSED BY '\"'
        LINES TERMINATED BY '\n'
        ('symbol_t', 'last_trade_price_only_t','a','b','c','d','e')";

mysql_query($sql);

但不知怎的,它不起作用。我把位置设置错了吗?

我还有另一个问题。如果我想获得一个带有url的外部csv(yahoo finanace csv):http://finance.yahoo.com/d/quotes.csv?s= $ ticker_url& f = sl1 = .csv ($ ticker_url是股票代码的集合)。我的$ location var是否仅仅是url,还是我必须先用fopen(url)打开它?

现在:

$data_tablename="data_".date("m_d_Y",time());
$filename="C:\\xampp\\htdocs\\live\\quotes.csv";
$sql = "LOAD DATA LOCAL INFILE '{$filename}'
        INTO TABLE '{$data_tablename}'
        FIELDS TERMINATED BY ','
        OPTIONALLY ENCLOSED BY '\"'
        LINES TERMINATED BY '\r\n'
        ('symbol_t', 'last_trade_price_only_t','a','b','c','d','e')";

Table

1 个答案:

答案 0 :(得分:4)

由于您使用的是Windows,因此您的CSV文件中的行可能会以\r\n终止,因此您需要更改:

LINES TERMINATED BY '\n'

LINES TERMINATED BY '\r\n'

根据documentation

  

如果您在Windows系统上生成了文本文件,则可能   必须使用LINES TERMINATED BY'\ r \ n'来正确读取文件,   因为Windows程序通常使用两个字符作为一行   终止。某些程序(如写字板)可能会使用\ r作为一行   写文件时的终结符。要阅读此类文件,请使用LINES   终止于'\ r'。

此外:

'{datas}'

可能意味着:

'{$datas}'

此外:

('symbol_t', 'last_trade_price_only_t','a','b','c','d','e')";

需要:

(`symbol_t`, `last_trade_price_only_t`, `a`, `b`, `c`, `d`, `e`)";