2017-11-09 1 views
1

CSVファイルの2番目の列をMySQLにインポートします。ここでは、CSVファイルがあります:CSVの2番目の列のみをインポートする

Name,Source,Follows 
John,Youtube,Y 
Kat,FB,N 
Jacob,Twitter,N 

ここで私が持っているコードは、これまでです:

DROP TABLE temp; 

CREATE TABLE temp 
(ID   INT    AUTO_INCREMENT   primary key, 
sn   VARCHAR(50) 
); 

DESCRIBE temp; 

LOAD DATA LOCAL INFILE '/Users/...temp.csv' INTO TABLE Person 
FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n' 
IGNORE 1 LINES 
(@col2) set [email protected]; 

SELECT * FROM temp; 

はしかし、私は空のセットがあることを取得します。

答えて

0

試してみてください。

ファイル:/path/to/temp.csv

Name,Source,Follows 
John,Youtube,Y 
Kat,FB,N 
Jacob,Twitter,N 

MySQLコマンドライン:

mysql> DROP TABLE IF EXISTS `temp`; 
Query OK, 0 rows affected (0.00 sec) 

mysql> CREATE TABLE IF NOT EXISTS `temp` (
    -> `ID` INT AUTO_INCREMENT PRIMARY KEY, 
    -> `sn` VARCHAR(50) 
    ->); 
Query OK, 0 rows affected (0.00 sec) 

mysql> LOAD DATA LOCAL INFILE '/path/to/temp.csv' 
    -> INTO TABLE `temp` 
    -> FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n' 
    -> IGNORE 1 LINES 
    -> (@`null`, `sn`, @`null`); 
Query OK, 3 rows affected (0.00 sec) 
Records: 3 Deleted: 0 Skipped: 0 Warnings: 0 

mysql> SELECT `ID`, `sn` 
    -> FROM `temp`; 
+----+---------+ 
| ID | sn  | 
+----+---------+ 
| 1 | Youtube | 
| 2 | FB  | 
| 3 | Twitter | 
+----+---------+ 
3 rows in set (0.00 sec) 

UPDATE

mysql> LOAD DATA LOCAL INFILE '/tmp/temp.csv' 
    -> INTO TABLE `temp` 
    -> FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n' 
    -> IGNORE 1 LINES 
    -> (@`null`, `sn`); 
Query OK, 3 rows affected, 3 warnings (0.00 sec) 
Records: 3 Deleted: 0 Skipped: 0 Warnings: 3 

mysql> SHOW WARNINGS; 
+---------+------+---------------------------------------------------------------------------+ 
| Level | Code | Message                 | 
+---------+------+---------------------------------------------------------------------------+ 
| Warning | 1262 | Row 1 was truncated; it contained more data than there were input columns | 
| Warning | 1262 | Row 2 was truncated; it contained more data than there were input columns | 
| Warning | 1262 | Row 3 was truncated; it contained more data than there were input columns | 
+---------+------+---------------------------------------------------------------------------+ 
3 rows in set (0.00 sec) 

mysql> SELECT `ID`, `sn` 
    -> FROM `temp`; 
+----+---------+ 
| ID | sn  | 
+----+---------+ 
| 1 | Youtube | 
| 2 | FB  | 
| 3 | Twitter | 
+----+---------+ 
3 rows in set (0.00 sec) 
+0

これはやりました仕事 - ありがとう!しかし、はるかに大きなcsvファイルに対してこれを行う方法はありますか? 100列あるとしましょう。 2番目の列の情報だけを取得する方法はありますか? – billyl320

+0

@ billyl320:更新された回答を参照してください。 '入力行にフィールドが多すぎる場合、余分なフィールドは無視され、警告の数は増えます.'、[13.2.6 LOAD DATA INFILE構文](https://dev.mysql.com/doc/refman/ 5.7/ja/load-data.html)。 – wchiquito

+0

ああ大丈夫です - ありがとう。私が50番目の欄を100から外したいと思ったら、これがどのように変わるか考えてみましょうか? – billyl320

関連する問題