Python - mysql中导入CSV数据 【学习笔记】

<span style="font-size:18px;">导出
mysql> INSERT INTO test_main
    -> SELECT 1, 'A' UNION ALL
    -> SELECT 2, 'B' UNION ALL
    -> SELECT 3, 'C';
Query OK, 3 rows affected (0.01 sec)
Records: 3  Duplicates: 0  Warnings: 0
 
mysql>
mysql> select id, value
    -> INTO OUTFILE 'f:/test_main.txt'
    -> FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY ''''
    -> LINES TERMINATED BY '\n'
    -> FROM test_main;
Query OK, 3 rows affected (0.01 sec)
 
 
 
导入  数据文件比目标表多字段
 
mysql> LOAD DATA INFILE 'f:/test_main.txt'
    -> INTO TABLE test_main6
    -> FIELDS TERMINATED BY ','
    -> OPTIONALLY ENCLOSED BY ''''
    -> (@dummy, value);
Query OK, 3 rows affected (0.00 sec)
Records: 3  Deleted: 0  Skipped: 0  Warnings: 0
 
mysql> select * from test_main6;
+-------+
| value |
+-------+
| A     |
| B     |
| C     |
+-------+
3 rows in set (0.00 sec)
 
 
这里的关键点, 在于那个   @dummy。
对你而言, 如果文件有 10列, 你只导 2 , 7 的话, 那就是
 
@dummy,列2,@dummy,@dummy,@dummy,@dummy,列7,@dummy,@dummy,@dummy</span>


第一部分, 是如何处理,  数据文件中, 列的数量,  大于 表的数量的情况。


假设数据文件如下:
 
Book1.csv
 
 
编号,名称,说明
1,测试数据1,"测试CSV文件中,有逗号"
2,测试数据2,"测试CSV文件中有""双引号"""
3,测试数据3,"测试CSV文件中,有逗号和""双引号"""
4,测试数据4,普通数据
 
 
mysql> CREATE TABLE Test_Book1 (
    ->   id    int,
    ->   name  VARCHAR(10),
    ->   data  VARCHAR(100)
    -> );
Query OK, 0 rows affected (0.05 sec)
 
 
下面的 lines terminated by '\r\n' 是 要求换行符号,为 windows的换行
下面的 ignore 1 lines是 忽略第一行的标题行。
mysql> LOAD DATA INFILE 'f:/Book1.csv'
    -> INTO TABLE Test_Book1
    -> FIELDS TERMINATED BY ','
    -> OPTIONALLY ENCLOSED BY '"'
    -> lines terminated by '\r\n'
    -> ignore 1 lines
    -> (id, name, data);
Query OK, 4 rows affected (0.00 sec)
Records: 4  Deleted: 0  Skipped: 0  Warnings: 0
 
mysql> select * from test_book1;
+------+-----------+--------------------------------+
| id   | name      | data                           |
+------+-----------+--------------------------------+
|    1 | 测试数据1 | 测试CSV文件中,有逗号           |
|    2 | 测试数据2 | 测试CSV文件中有"双引号"        |
|    3 | 测试数据3 | 测试CSV文件中,有逗号和"双引号" |
|    4 | 测试数据4 | 普通数据                       |
+------+-----------+--------------------------------+
4 rows in set (0.00 sec)
 
 
 
对你而言, 你需要使用
ignore 1 lines 忽略第一行的标题行。

第二部分, 是说明, 如何 排除掉标题列的情况。




郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。