mysql - LOAD DATA LOCAL INFILE 命令不导入任何数据

标签 mysql csv pythonanywhere

我一直在尝试将 csv 文件上传到 pythonanywhere 上 mysql 数据库的表中,但我无法弄清楚为什么 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

我再次尝试了该命令,但取下了钻头以删除 header :

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)

表格如下:

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 时我需要注意哪些格式?

更新:这是 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

最佳答案

感谢@barmar 的回答。问题是 csv 文件行以 '\r\而不是 '\n' 终止。

关于mysql - LOAD DATA LOCAL INFILE 命令不导入任何数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36583354/

相关文章:

python - 将 Flask 上传的文件读取到 pandas 数据框中时找不到文件

php - 无法将表单提交到数据库

python - 如何抓取页面 url 未更改但下一个按钮在同一 url 页面下方添加数据的网站

php - 如果我输入“,则帖子不会提交”

mysql - 将 MYSQL 表导出为 CSV。查询不起作用

javascript - 无法通过nodejs中的fs.readFile()读取整个文件

python - choice_set django 教程第一部分

python - lxml.etree.XMLSyntaxError : Start tag expected, '<' 未找到,第 1 行,第 1 列

php - WAMP - PHP/MySQL - 为什么我的 POST 调用被破坏

mysql - 如何在 MySQL 触发器中使用 'WHEN' 子句?