- 浏览: 241969 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
thepastsee:
304572183股票交流 欢迎加入
实时股票 -
345161974:
很不错,我第一个接触的CSS卡片布局效果,多谢
css卡片效果
我在CU写的,现在搬过来。CSDN的博客格式终于好了!
LOAD DATA INFILE 一直被认为是MySQL很强大的一个数据导入工具,因为他速度非常的快。
不过有几个问题一定要注意
1、编码。
2、灵活导入导出。
我来举两个例子说明一下。
一、关于编码
我们的示例文本文件:
"我爱你","20","相貌平常,经常耍流氓!哈哈"
"李奎","21","相貌平常,经常耍流氓!哈哈"
"王二米","20","相貌平常,经常耍流氓!哈哈"
"老三","24","很强"
"老四","34","XXXXX"
"老五","52","***%*¥*¥*¥*¥"
"小猫","45","中间省略。。。"
"小狗","12","就会叫"
"小妹","21","PP的很"
"小坏蛋","52","表里不一"
"上帝他爷","96","非常英俊"
"MM来了","10","。。。"
"歌颂党","20","社会主义好"
"人民好","20","的确是好"
"老高","10","学习很好"
"斜三","60","眼睛斜了"
"中华之子","100","威武的不行了"
"大米","63","我爱吃"
"苹果","15","好吃"
我们的示例表结构:
+-------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
Table | Create
Table
|
+-------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| t0 | CREATE TABLE `t0` (
`id` bigint(20) unsigned NOT NULL auto_increment,
`name` char(20) NOT NULL,
`age` tinyint(3) unsigned NOT NULL,
`description` text NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `idx_name` (`name`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 |
+-------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
我们把这个文本文件从WINDOWS 下COPY到LINUX下看看
mysql>
load data infile '/tmp/t0.txt' ignore into table t0 character set gbk
fields terminated by ',' enclosed by '"' lines terminated by '\n'
(`name`,`age`,`description`);
Query OK, 19 rows affected (0.01 sec)
Records: 19 Deleted: 0 Skipped: 0 Warnings: 0
mysql> select * from t0;
+----+----------+-----+----------------------------+
| id | name | age | description |
+----+----------+-----+----------------------------+
| 1 | 我爱你 | 20 | 相貌平常,经常耍流氓!哈哈 |
| 2 | 李奎 | 21 | 相貌平常,经常耍流氓!哈哈 |
| 3 | 王二米 | 20 | 相貌平常,经常耍流氓!哈哈 |
| 4 | 老三 | 24 | 很强 |
| 5 | 老四 | 34 | XXXXX |
| 6 | 老五 | 52 | ***%*¥*¥*¥*¥ |
| 7 | 小猫 | 45 | 中间省略。。。 |
| 8 | 小狗 | 12 | 就会叫 |
| 9 | 小妹 | 21 | PP的很 |
| 10 | 小坏蛋 | 52 | 表里不一 |
| 11 | 上帝他爷 | 96 | 非常英俊 |
| 12 | MM来了 | 10 | 。。。 |
| 13 | 歌颂党 | 20 | 社会主义好 |
| 14 | 人民好 | 20 | 的确是好 |
| 15 | 老高 | 10 | 学习很好 |
| 16 | 斜三 | 60 | 眼睛斜了 |
| 17 | 中华之子 | 100 | 威武的不行了 |
| 18 | 大米 | 63 | 我爱吃 |
| 19 | 苹果 | 15 | 好吃 |
+----+----------+-----+----------------------------+
19 rows in set (0.00 sec)
我来说明一下相关的参数
关于我的导入语句,我现在直说两个,其他的参考手册。
character set gbk;
这个字符集一定要写,要不然就会乱码或者只导入一部分数据。
ignore into table
因为name 列加了唯一索引,加这个是为了避免重复数据插入报错。
加入我们再次运行这个导入语句就会发现
Query OK, 0 rows affected (0.00 sec)
Records: 19 Deleted: 0 Skipped: 19 Warnings: 0
没有任何值导入,因为里面已经有了相同的值。
这里也可以用replace into table
MySQL会把相同的先干掉,再插入新的值。
mysql>
load data infile '/tmp/t0.txt' replace into table t0 character set gbk
fields terminated by ',' enclosed by '"' lines terminated by '\n'
(`name`,`age`,`description`);
Query OK, 38 rows affected (0.00 sec)
Records: 19 Deleted: 19 Skipped: 0 Warnings: 0
mysql> select * from t0;
+----+----------+-----+----------------------------+
| id | name | age | description |
+----+----------+-----+----------------------------+
| 20 | 我爱你 | 20 | 相貌平常,经常耍流氓!哈哈 |
| 21 | 李奎 | 21 | 相貌平常,经常耍流氓!哈哈 |
| 22 | 王二米 | 20 | 相貌平常,经常耍流氓!哈哈 |
| 23 | 老三 | 24 | 很强 |
| 24 | 老四 | 34 | XXXXX |
| 25 | 老五 | 52 | ***%*¥*¥*¥*¥ |
| 26 | 小猫 | 45 | 中间省略。。。 |
| 27 | 小狗 | 12 | 就会叫 |
| 28 | 小妹 | 21 | PP的很 |
| 29 | 小坏蛋 | 52 | 表里不一 |
| 30 | 上帝他爷 | 96 | 非常英俊 |
| 31 | MM来了 | 10 | 。。。 |
| 32 | 歌颂党 | 20 | 社会主义好 |
| 33 | 人民好 | 20 | 的确是好 |
| 34 | 老高 | 10 | 学习很好 |
| 35 | 斜三 | 60 | 眼睛斜了 |
| 36 | 中华之子 | 100 | 威武的不行了 |
| 37 | 大米 | 63 | 我爱吃 |
| 38 | 苹果 | 15 | 好吃 |
+----+----------+-----+----------------------------+
19 rows in set (0.00 sec)
(`name`,`age`,`description`);
这些也就是具体的表属性了,指明这个就可以导入想要的数据。
2、关于灵活性,其实也就是一个记录功能
如果想在导入的时候记录一下导入的具体时间怎么办?
我们来看看
先加一个时间属性记录导入时间。
mysql> alter table t0 add update_time timestamp not null;
Query OK, 19 rows affected (0.00 sec)
Records: 19 Duplicates: 0 Warnings: 0
干掉唯一索引
mysql> alter table t0 drop index idx_name;
Query OK, 19 rows affected (0.00 sec)
Records: 19 Duplicates: 0 Warnings: 0
mysql>
load data infile '/tmp/t0.txt' into table t0 character set gbk fields
terminated by ',' enclosed by '"' lines terminated by '\n'
(`name`,`age`,`description`) set update_time=current_timestamp;
Query OK, 19 rows affected (0.00 sec)
Records: 19 Deleted: 0 Skipped: 0 Warnings: 0
mysql> select * from t0;
+----+----------+-----+----------------------------+---------------------+
| id | name | age | description | update_time |
+----+----------+-----+----------------------------+---------------------+
| 20 | 我爱你 | 20 | 相貌平常,经常耍流氓!哈哈 | 0000-00-00 00:00:00 |
…………
| 24 | 老四 | 34 | XXXXX | 0000-00-00 00:00:00 |
| 25 | 老五 | 52 | ***%*¥*¥*¥*¥ | 0000-00-00 00:00:00 |
…………
| 35 | 斜三 | 60 | 眼睛斜了 | 0000-00-00 00:00:00 |
| 36 | 中华之子 | 100 | 威武的不行了 | 0000-00-00 00:00:00 |
…………
| 60 | 王二米 | 20 | 相貌平常,经常耍流氓!哈哈 | 2008-06-30 14:58:37 |
…………
| 68 | 上帝他爷 | 96 | 非常英俊 | 2008-06-30 14:58:37 |
| 69 | MM来了 | 10 | 。。。 | 2008-06-30 14:58:37 |
…………
| 75 | 大米 | 63 | 我爱吃 | 2008-06-30 14:58:37 |
| 76 | 苹果 | 15 | 好吃 | 2008-06-30 14:58:37 |
+----+----------+-----+----------------------------+---------------------+
38 rows in set (0.00 sec)
新导入的19条记录时间被记录了下来。
只是之前的数据库没有记录,不过现在不需要这些重复数据了。
干掉他就可以了
mysql> alter table t0 order by id desc;
Query OK, 38 rows affected (0.01 sec)
Records: 38 Duplicates: 0 Warnings: 0
mysql> alter ignore table t0 add unique index idx_name (`name`);
Query OK, 38 rows affected (0.00 sec)
Records: 38 Duplicates: 19 Warnings: 0
mysql> alter table t0 order by id asc;
Query OK, 19 rows affected (0.01 sec)
Records: 19 Duplicates: 0 Warnings: 0
mysql> select * from t0;
+----+----------+-----+----------------------------+---------------------+
| id | name | age | description | update_time |
+----+----------+-----+----------------------------+---------------------+
| 58 | 我爱你 | 20 | 相貌平常,经常耍流氓!哈哈 | 2008-06-30 14:58:37 |
| 59 | 李奎 | 21 | 相貌平常,经常耍流氓!哈哈 | 2008-06-30 14:58:37 |
| 60 | 王二米 | 20 | 相貌平常,经常耍流氓!哈哈 | 2008-06-30 14:58:37 |
| 61 | 老三 | 24 | 很强 | 2008-06-30 14:58:37 |
| 62 | 老四 | 34 | XXXXX | 2008-06-30 14:58:37 |
| 63 | 老五 | 52 | ***%*¥*¥*¥*¥ | 2008-06-30 14:58:37 |
| 64 | 小猫 | 45 | 中间省略。。。 | 2008-06-30 14:58:37 |
| 65 | 小狗 | 12 | 就会叫 | 2008-06-30 14:58:37 |
| 66 | 小妹 | 21 | PP的很 | 2008-06-30 14:58:37 |
| 67 | 小坏蛋 | 52 | 表里不一 | 2008-06-30 14:58:37 |
| 68 | 上帝他爷 | 96 | 非常英俊 | 2008-06-30 14:58:37 |
| 69 | MM来了 | 10 | 。。。 | 2008-06-30 14:58:37 |
| 70 | 歌颂党 | 20 | 社会主义好 | 2008-06-30 14:58:37 |
| 71 | 人民好 | 20 | 的确是好 | 2008-06-30 14:58:37 |
| 72 | 老高 | 10 | 学习很好 | 2008-06-30 14:58:37 |
| 73 | 斜三 | 60 | 眼睛斜了 | 2008-06-30 14:58:37 |
| 74 | 中华之子 | 100 | 威武的不行了 | 2008-06-30 14:58:37 |
| 75 | 大米 | 63 | 我爱吃 | 2008-06-30 14:58:37 |
| 76 | 苹果 | 15 | 好吃 | 2008-06-30 14:58:37 |
+----+----------+-----+----------------------------+---------------------+
19 rows in set (0.00 sec)
现在是达到了目的了,为啥中途要干掉唯一索引呢?因为set 语法 再有IGNORE 的时候会忽略掉。
发表评论
-
mysql_group by 奇怪问题解决
2011-10-22 13:32 1002我回去查了一下关于mysql group by 奇怪的现像, ... -
mysql 密码
2011-09-26 17:46 780linux ---- ... -
转___MySQL Order By索引优化
2011-09-26 17:23 975MySQL Order By索引优化 ... -
mysql调优_20转
2011-06-22 15:24 755http://coolshell.cn/articles ... -
数据库设计
2011-06-22 11:43 723http://www.cnblogs.com/DBFocus/ ... -
MySQL索引的索引长度问题
2011-06-07 21:11 976转 http://blog.haohtml.com/a ... -
mysql_error_code
2011-05-13 21:44 775原创 mysql出错代码及 ... -
sql之left join、right join、inner join的区别_转
2011-04-17 23:37 903http://www.cnblogs.com/pcjim ... -
mysql_p150 error_转
2011-04-17 21:06 783ERROR ... -
mysql_序列表_02
2011-03-27 11:08 727lkjlkj -
mysql_投档项目终结
2011-03-21 21:41 654kljljlkj;lkj -
mysql_批量数据脚本..
2011-03-21 20:29 836lkjlkj -
window 启动仃止mysql
2011-03-17 23:32 971[导读]在非NT版本的Windows中,在后台启动mysqld ... -
flush privileges 意思_转转转
2011-03-17 23:31 1489test是mysql安装好后,就有的一个示例数据库 楼主可以 ... -
mysql 权限列表_转转
2011-03-17 23:30 1032菜鸟课堂:MySQL权限的详细解答 2009-09-02 1 ... -
mysql 存储过程参数_可能乱码
2011-03-17 01:25 825DELIMITER $$ DROP PROCEDURE ... -
mysql存储过程_游标_项目练习
2011-03-17 01:04 939;lk;kl;kl;lk -
mysql 权限管理_转转转
2011-03-15 22:21 1063Mysql用户与权限管理 ... -
给mysql加上 rownum _转
2011-03-12 23:01 1421转 http://home.21cto.com/foru ... -
MySQL动态行转列_zhuan
2011-03-05 18:49 827网上的都是一些静态的,用CASE WHEN结构实现。所以我写了 ...
相关推荐
`LOAD DATA INFILE` 是 MySQL 数据库中一种高效的数据导入工具,它允许用户从外部文本文件快速批量导入数据到数据库的表中。相比于使用 `INSERT INTO` 语句逐条插入,`LOAD DATA INFILE` 在处理大量数据时速度显著更...
在MySQL中,`LOAD DATA INFILE` 是一个非常高效的命令,用于从文本文件批量导入数据到数据库表中。然而,在处理包含Windows风格换行符(`\r\n`)的文件时,可能会遇到一些问题,就像在标题和描述中提到的记录换行...
首先,我们来看`LOAD DATA INFILE`语句。这是MySQL提供的一种高效的数据导入工具,用于快速地从文本文件(如CSV、TXT等)中批量加载数据到已存在的表中。标题"txt数据文件导入mysql数据库"就是指的这个功能。使用...
在这个过程中,确保源文件与目标表的字段类型和顺序匹配,否则可能需要在`LOAD DATA INFILE`语句中指定字段映射。 对于大型数据集,导出和导入过程可能需要考虑性能优化,例如分批导入、设置合适的缓冲区大小等。...
2. **数据加载**:使用INSERT INTO语句将数据加载到表中,或者使用LOAD DATA INFILE命令快速导入大量数据。 3. **数据转换**:使用SQL的聚合函数(如COUNT, SUM, AVG)、分组(GROUP BY)、连接(JOIN)和窗口函数...
首先,我们来看如何导出数据。MySQL提供了`mysqldump`命令来实现这一功能。例如,要导出名为`mydatabase`的数据库,你可以使用以下命令: ```bash mysqldump -u your_username -p your_password mydatabase > ...
而如果只关注数据的快速导入导出,特别是当操作的表结构已经存在或者不需要备份时,使用 SELECT INTO OUTFILE 和 LOAD DATA INFILE 可能会更高效。 此外,MySQL的权限系统对于数据导入导出操作同样重要。数据库管理...
在MySQL中导入这些数据时,需要先创建对应的表格结构,然后使用`LOAD DATA INFILE`或`source`命令将SQL文件中的数据加载到数据库中。例如: ```sql CREATE TABLE province ( id INT PRIMARY KEY, name VARCHAR(50...
Sybase数据库的处理方式与MySQL类似,使用`load data infile`命令,但需要注意的是,字段定义可能会根据不同的数据库方言有所不同,例如在Sybase中,字段NBXH和QYMC被定义在`<column name="...">`标记内。...
首先,我们来看导入CSV文件的方法。使用`LOAD DATA INFILE`命令可以方便地将CSV数据加载到已存在的表中。例如: ```sql mysql> LOAD DATA INFILE "your csv file path" INTO TABLE [tablename] FIELDS TERMINATED ...
接着,让我们来看看如何使用mysqldump命令导出数据库结构或不含数据的数据库。如果需要仅导出数据库结构,可以在命令中加入-d参数,并使用--add-drop-table参数在每个create table语句之前增加一个drop table语句。...
- **使用`LOAD DATA INFILE`**:如果数据可以从文件中批量加载,则可以使用`LOAD DATA INFILE`命令,这是一种非常高效的数据导入方式。 - **调整MySQL配置**:合理地调整MySQL服务器的配置参数,如增加`innodb_...
首先,我们来看如何启动和停止MySQL服务。通过运行`net stop mysql`命令可以停止MySQL服务,而`net start mysql`则用于启动服务。这是在Windows系统中进行操作的常用方法,确保数据库系统的正常运行。 接下来,了解...
INFILE 'N.txt' INTO TABLE my_table FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' TRAILING NULLCOLS ( column1, column2, ... ) ``` 在这个例子中,`N.txt` 是数据文件,每行数据由逗号分隔,字段...
首先,让我们看看如何使用基本的MATLAB函数`fgetl`来读取特定行的数据。以下是一个函数示例,它读取`filein`文件中的第`line`行,并将其写入`fileout`文件: ```matlab function dataout=dataread(filein,fileout,...
首先,我们来看`mysqldump`,这是一个用于备份MySQL数据库的命令行工具。它可以导出整个数据库或单个表的数据及结构,方便进行数据迁移或备份。以下是几个基本用例: 1. **导出整个数据库**: ```bash mysqldump ...
首先,我们来看如何使用`SHOW`语句。`SHOW DATABASES;`这个命令用于列出服务器上现有的所有数据库。你可以通过执行此命令来查看有哪些数据库存在于系统中。 接下来是创建数据库,如创建名为`MYSQLDATA`的数据库,...
首先,我们来看第一种方法,即利用MySQL for Excel插件。这个插件允许用户直接在Excel环境中操作MySQL数据库,简化了数据导入的过程。安装插件后,用户可以在Excel中编辑数据,并像处理Excel工作表一样更新数据库。...
/usr/local/mysql/bin/mysql -uroot -proot test -e “LOAD DATA INFILE ‘/usr/1.txt’ replace INTO TABLE test FIELDS TERMINATED BY ‘\t’ (name,address)” info: 1.txt zhangsan wuhan lishi wuhan 把1.txt...