1

重複の可能性:
CSV ファイルを MySQL に直接インポートする
Mysql から CSV をエクスポートする

システム (C:/xampp/htdocs/live/quotes.csv) にある 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 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')";

テーブル

4

1 に答える 1

4

Windows を使用しているため、CSV ファイルの行は次のように終了している可能性が高い\r\nため、次のように変更する必要があります。

LINES TERMINATED BY '\n'

LINES TERMINATED BY '\r\n'

ドキュメントごと:

Windows システムでテキスト ファイルを生成した場合は、ファイルを正しく読み取るために LINES TERMINATED BY '\r\n' を使用する必要がある場合があります。これは、Windows プログラムでは通常、行末記号として 2 文字を使用するためです。ワードパッドなどの一部のプログラムでは、ファイルを書き込むときに \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 に答える