mysql中想用load data infile数据导入
答案:1 悬赏:30 手机版
解决时间 2021-01-03 11:41
- 提问者网友:锁深秋
- 2021-01-03 00:44
mysql中想用load data infile语句导入一个txt文本的部分列,比如数据中有10列,并且含有列标题,我只想导入第2,7列该怎么做?
最佳答案
- 五星知识达人网友:神也偏爱
- 2021-01-03 02:10
这个我分2部分说明,
第一部分, 是如何处理, 数据文件中, 列的数量, 大于 表的数量的情况。
第二部分, 是说明, 如何 排除掉标题列的情况。
第一部分
导出
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
第二部分
假设数据文件如下:
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 忽略第一行的标题行。
第一部分, 是如何处理, 数据文件中, 列的数量, 大于 表的数量的情况。
第二部分, 是说明, 如何 排除掉标题列的情况。
第一部分
导出
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
第二部分
假设数据文件如下:
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 忽略第一行的标题行。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯