MySQL用Load Data local infile 导入部分数据后中文乱码

今天在两台MySQL服务器之间导数据,因为另一个MySQL服务器是测试用的,差一个月的数据,从现有MySQL服务器select到一个文件,具体语句是:

select * from news where ine_time>="2010-02-01"  and ine_time <"2010-03-01" into outfile "/tmp/newsdata.sql";

然后scp到另一个MySQL 在线扑克室 Server上导入到对应的表中,具体语句如下:

load data local infile "/home/lsanotes/newsdata.sql"  into table news;

然后刷新访问这台数据库的web页面,发现刚导进来的这一个月的数据都是乱码,而以前其它月份的则正常,用show create table news;查看发现两个服务器中的news表都是utf8,奇怪,把导出的数据转换成utf8,再导入问题仍旧。
后来在数据库中查看刚刚导进的这一个月的数据时,没有执行set names utf8;就可以正常查看中文而不乱码,而其它月份的必须先执行set
names utf8;才能看中文而不乱码,但是当我执行过set names
utf8;后再看刚刚导进的这一个月的数据却是乱码,看来导进来的数据并不是utf8格式。最后的解决方法是:

load data local infile "/home/lsanotes/newsdata.sql"  into table news character set utf8;
最后Web页面显示正常.

http://www.lsanotes.cn/load-data-local-infile
时间: 2024-12-08 08:17:02

MySQL用Load Data local infile 导入部分数据后中文乱码的相关文章

Java不写文件,LOAD DATA LOCAL INFILE大批量导入数据到MySQL的实现

Mysql loaddata的使用 数据库中,最常见的写入数据方式是通过SQLINSERT来写入,另外就是通过备份文件恢复数据库,这种备份文件在MySQL中是SQL脚本,实际上执行的还是在批量INSERT语句. 在实际中,常常会遇到两类问题:一类是数据导入,比如从word.excel表格或者txt文档导入数据(这些数据一般来自于非技术人员通过OFFICE工具录入的文档):一类数据交换,比如从MySQL.Oracle.DB2数据库之间的数据交换. 这其中就面临一个问题:数据库SQL脚本有差异,SQ

JDBC使用MYSQL的LOAD DATA LOACAL INFILE和LOAD DATA INFILE

MYSQL的LOAD方法都必须建立在mysql服务允许使用该命令的情况下: 开启该命令的方法: 1.在实例对应的my.cnf(windows为my.ini)中添加一行local-infile=1(默认好像是开启的),改为0即关闭,LOAD方式禁用. 2.加参数local-infile=1(默认是开启的,除非my.cnf中配置了禁止使用load才这样启动)启动mysql,"/usr/local/mysql/bin/mysqld_safe --user=mysql --local-infile=1

mysql:执行LOAD DATA LOCAL 报错

mysql:执行LOAD DATA LOCAL 报错. 我使用navicat for mysql 连接 mysql服务器执行local 可以正常执行 . show VARIABLES like  '%local%infile%'结果如下:+---------------+-------+| Variable_name | Value |+---------------+-------+| local_infile  | ON    | +---------------+-------+1 row

Load data local infile 实验报告

LOAD DATA INFILE语句以非常高的效率从文本文件中读取行并插入到表中.导入的文件名必须以字符串格式给定. LOAD DATA INFILE是SELECT ... INTO OUTFILE语句的后续操作. 要将表中数据写入到文件中,使用SELECT ... INTO OUTFILE语句.要将文件中的数据读回表中,使用LOAD DATA INFILE语句.这两个语句的 FIELDS和LINES子句是相同的.这些子句都是可选的,但如果同时指定了两者,则FIELDS子句必须写在LINES的前

MySQL通过 LOAD DATA INFILE 批量导入数据

LOAD DATA INFILE 语句用法 参考手册 本文语句参数使用默认值 PHP:  TP框架环境 // 定义文件路径$file_path = 'LOAD_DATA_LOCAL_INFILE.txt'; set_time_limit(1000); $fhandler = fopen($file_path,'w'); if($fhandler == false){ // 文件打开失败 } $id = 7; $add_time = time(); // 向文件中写入数据 这里是写入 10万条 $

Mybatis拦截器 mysql load data local 内存流处理

Mybatis 拦截器不做解释了,用过的基本都知道,这里用load data local主要是应对大批量数据的处理,提高性能,也支持事务回滚,且不影响其他的DML操作,当然这个操作不要涉及到当前所load的数据,其中在使用的时候一定要local , 这个命令使用是mysql规定的,否则不加则会认为是服务器本地的文件.这里主要是以流的方式来做处理,这样可以使用内存流,这样就可以避免在某些时候需要生成文件才能导入的多余操作,和IO性能消耗.也可以是应用本地的文件. 注:该做法只试用于存入数据的表,不

[MySql]使用LOAD DATA导入数据

LOAD DATA导入数据语法: LOAD DATA [LOW_PRIORITY | CONCURRENT] [LOCAL] INFILE 'file_name' [REPLACE | IGNORE] INTO TABLE tbl_name [PARTITION (partition_name,...)] [CHARACTER SET charset_name] [{FIELDS | COLUMNS} [TERMINATED BY 'string'] --分割字符 [[OPTIONALLY] E

mysql 的load data infile

LOAD DATA INFILE语句从一个文本文件中以很高的速度读入一个表中.如果指定LOCAL关键词,从客户主机读文件.如果LOCAL没指定,文件必须位于服务器上.(LOCAL在MySQL3.22.6或以后版本中可用.) 为了安全原因,当读取位于服务器上的文本文件时,文件必须处于数据库目录或可被所有人读取.另外,为了对服务器上文件使用LOAD DATA INFILE,在服务器主机上你必须有file的权限. 头 一回用load data infile,以为只是把插入语句写到一个文件里,然后用lo

LOAD DATA LOACL INFILE

在使用LOAD DATA LOCAL INFILE时遇到: ERROR 1148 (42000): The used command is not allowed with this MySQL version解决办法: 1.启动mysql时添加--local_file=1选项: 2.在my.cnf的[mysqld]下添加local_file=1:但是这样做据说有安全问题. LOAD DATA LOACL INFILE