1

可能重复:将
CSV 文件直接导入 MySQL
从 Mysql 导出 CSV

我想将系统上的 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) 
)");

现在想像这样在表中写入 CSV:

$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 财务 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')";

桌子

4

1 回答 1

4

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

LINES TERMINATED BY '\n'

LINES TERMINATED BY '\r\n'

根据文档

如果您在 Windows 系统上生成了文本文件,则可能必须使用 LINES TERMINATED BY '\r\n' 来正确读取文件,因为 Windows 程序通常使用两个字符作为行终止符。某些程序(例如写字板)在写入文件时可能会使用 \r 作为行终止符。要读取此类文件,请使用 LINES TERMINATED BY '\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`)";
于 2013-01-05T12:13:31.530 回答