使用mysql的load infile只填充某些列
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了使用mysql的load infile只填充某些列,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2152字,纯文字阅读大概需要4分钟。
内容图文
![使用mysql的load infile只填充某些列](/upload/InfoBanner/zyjiaocheng/897/bb51de60f1284755a39e3e8e1519ee7a.jpg)
我有一个包含大量数据的csv文件,我想将它上传到mysql表中.但是,我想保留一列(主要ID)为空,以便我自己编辑它.
在mysql的文档中,它表示您可以指定列,但从我的研究中,您似乎只能指定csv文件的列.
因此可以指定表的列
解决方法:
检查此示例:
# cat /tmp/db.txt
id,col1,col2
1,23,"dsafsdf"
2,-1,"ghfdhg"
7,9,"strsdrt"
# mysql test
mysql> CREATE TABLE `test` (
`id` int(11) NOT NULL,
`mycol1` int(11) DEFAULT NULL,
`mycol2` varchar(20) DEFAULT NULL,
PRIMARY KEY (`id`);
mysql> LOAD DATA INFILE '/tmp/db.txt'
INTO TABLE test FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
IGNORE 1 LINES (id, mycol1, mycol2);
Query OK, 3 rows affected (0.00 sec)
Records: 3 Deleted: 0 Skipped: 0 Warnings: 0
mysql> SELECT * FROM test;
+----+--------+---------+
| id | mycol1 | mycol2 |
+----+--------+---------+
| 1 | 23 | dsafsdf |
| 2 | -1 | ghfdhg |
| 7 | 9 | strsdrt |
+----+--------+---------+
3 rows in set (0.00 sec)
如果要指定某些列:
mysql> TRUNCATE test;
Query OK, 0 rows affected (0.00 sec)
mysql> SELECT * FROM test;
Empty set (0.00 sec)
mysql> LOAD DATA INFILE '/tmp/db.txt'
INTO TABLE test FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
IGNORE 1 LINES (id, @ignore, mycol2);
Query OK, 3 rows affected (0.00 sec)
Records: 3 Deleted: 0 Skipped: 0 Warnings: 0
mysql> SELECT * FROM test;
+----+--------+---------+
| id | mycol1 | mycol2 |
+----+--------+---------+
| 1 | NULL | dsafsdf |
| 2 | NULL | ghfdhg |
| 7 | NULL | strsdrt |
+----+--------+---------+
3 rows in set (0.00 sec)
您甚至可以使用自己的表达式设置它们:
mysql> TRUNCATE test;
Query OK, 0 rows affected (0.00 sec)
mysql> LOAD DATA INFILE '/tmp/db.txt'
INTO TABLE test FIELDS TERMINATED BY00 ','
OPTIONALLY ENCLOSED by '"' IGNORE 1 LINES (id, @var1, mycol2)
SET mycol1 = @var1 + 1;
Query OK, 3 rows affected (0.00 sec)
Records: 3 Deleted: 0 Skipped: 0 Warnings: 0
mysql> SELECT * FROM test;
+----+--------+---------+
| id | mycol1 | mycol2 |
+----+--------+---------+
| 1 | 24 | dsafsdf |
| 2 | 0 | ghfdhg |
| 7 | 10 | strsdrt |
+----+--------+---------+
3 rows in set (0.00 sec)
但是,请理解主键不能为空也不能重复,因此除非获取默认值,否则不能将其设置为NULL,例如,因为它是auto_increment列.
内容总结
以上是互联网集市为您收集整理的使用mysql的load infile只填充某些列全部内容,希望文章能够帮你解决使用mysql的load infile只填充某些列所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。