2016-04-12 18 views
1

私はpythonanywhere上のmysqlデータベース上のテーブルにcsvファイルをアップロードしようとしていましたが、LOAD DATA LOCAL INFILEコマンドが機能しない理由を理解できません。私は再度コマンドを試してみましたが、ヘッダを削除するためにビットを脱いLOAD DATA LOCAL INFILEコマンドでデータがインポートされない

mysql> LOAD DATA LOCAL INFILE '/twenty_year_change_data.csv' 
    -> INTO TABLE twenty_year_change_data 
    -> FIELDS TERMINATED BY ',' 
    -> ENCLOSED BY '"' 
    -> LINES TERMINATED BY '\n' 
    -> IGNORE 1 ROWS; 
Query OK, 0 rows affected (0.01 sec) 
Records: 0 Deleted: 0 Skipped: 0 Warnings: 0 

警告を見て
mysql> LOAD DATA LOCAL INFILE '/twenty_year_change_data.csv' 
    -> INTO TABLE twenty_year_change_data 
    -> FIELDS TERMINATED BY ',' 
    -> ENCLOSED BY '"' 
    -> LINES TERMINATED BY '\n'; 
Query OK, 1 row affected, 2 warnings (0.01 sec) 
Records: 1 Deleted: 0 Skipped: 0 Warnings: 2 

mysql> show warnings; 
+---------+------+-----------------------------------------------------+ 
| Level | Code | Message            | 
+---------+------+-----------------------------------------------------+ 
| Warning | 1265 | Data truncated for column 'pcode_district' at row 1 | 
| Warning | 1265 | Data truncated for column 'percent_change' at row 1 | 
+---------+------+-----------------------------------------------------+ 
2 rows in set (0.00 sec) 

は、これは私のコマンドと結果でした

テーブルの外観は次のとおりです。

0データの形式を見ると
mysql> select * from twenty_year_change_data; 
+----------------+------+------+----------------+ 
| pcode_district | 1995 | 2015 | percent_change | 
+----------------+------+------+----------------+ 
| pcode_   | 1995 | 2015 |    0 | 
+----------------+------+------+----------------+ 
1 row in set (0.00 sec) 

:ヘッダがそれらを含んでいないので、私はそれがアンダースコアに問題があるかもしれないと推測

mysql> describe twenty_year_change_data 
    -> ; 
+----------------+------------+------+-----+---------+-------+ 
| Field   | Type  | Null | Key | Default | Extra | 
+----------------+------------+------+-----+---------+-------+ 
| pcode_district | varchar(6) | NO |  | NULL |  | 
| 1995   | float  | YES |  | NULL |  | 
| 2015   | float  | YES |  | NULL |  | 
| percent_change | float  | YES |  | NULL |  | 
+----------------+------------+------+-----+---------+-------+ 
4 rows in set (0.00 sec) 

ので、私はcsvファイルを微調整し、それはまだ後に停止します最初のセルだけをインポートします。

問題を解決するにはどうしたらよいですか?また、mysqlを使用する際のフォーマットについて知っておく必要がありますか?

UPDATE:ここでは、CSVのトップだ

pcode_district,1995,2015,percent_change 
AL1 1,79700,427500,436.3864492 
AL1 2,78125,384250,391.84 
AL1 3,66500,306500,360.9022556 
AL1 4,98000,575000,486.7346939 
AL1 5,72000,365250,407.2916667 
+0

なぜ最初にテーブルにヘッダー行をインポートしようとしていますか?あなたの正確な問題について私は本当にはっきりしていません。あなたがリストしている警告は、ファイルから列ヘッダーをインポートしようとしているからです - "pcode_"はヘッダ "pcode_district"の最初の6文字です。これはあなたのテーブルが保持するものですその列( 'VARCHAR(6)')。実際の*データ*をインポートする際に問題がある場合は、データを投稿するのに役立ちます。 csvファイルの最初の数行、例えば、 –

+0

'twenty_year_change_data.csv'の2行のサンプル行を投稿できますか? –

+0

ああ。私は、最初のコマンドがヘッダー行を無視したと考えました。フォローアップコマンドは、何かをインポートするかどうかを知るための初心者のアプローチでした。申し訳ありませんが、私はmysqlの新機能です。私はデータを追加します... – elksie5000

答えて

1

答えを@barmarをお願い致します。問題は、csvファイルの行が '\ n'ではなく '\ r'で終了していることでした。

関連する問題