Load data local infile 实验报告

LOAD DATA INFILE语句以非常高的效率从文本文件中读取行并插入到表中。导入的文件名必须以字符串格式给定。

LOAD DATA INFILESELECT ... INTO OUTFILE语句的后续操作。

要将表中数据写入到文件中,使用SELECT ... INTO OUTFILE语句。要将文件中的数据读回表中,使用LOAD DATA INFILE语句。这两个语句的 FIELDSLINES子句是相同的。这些子句都是可选的,但如果同时指定了两者,则FIELDS子句必须写在LINES的前面。

load文件的时候,字符集由系统变量character_set_database指定。SET NAMEScharacter_set_client不会影响输入文件的解析。如果输入文件使用的字符集不同于默认值,一般需要使用CHARACTER SET子句指定所使用的字符集。binary字符集意味着不做任何字符集转换。

LOAD DATA INFILE按照字符集来解析文件中的所有字段,无论字段的数据类型是什么。为了能更正确地解析文件内容,必须保证数据写入到文件中的时候使用了正确的字符集。例如,如果使用mysqldump -T或者使用客户端mysql命令发起的SELECT ... INTO OUTFILE语句导出数据,请确保mysqldump或客户端mysql指定了选项--default-character-set

如果使用了关键字LOW_PRIORITY,插入操作将会延迟,直到没有其他客户端读取该表。如果使用了关键字CONCURRENT,这表示LOAD DATA INFILE插入数据的时候将使用并发插入concurrent inserts。这两个关键字不允许同时指定。

注意:目前不能load字符集为ucs2的文件。

系统变量character_set_filesystem决定了解析文件名时使用的字符集。

MariaDB 5.3开始,支持LOAD DATA INFILE时报告进度progress reporting

你还可以使用mysqlimport工具来load数据;它会发送LOAD DATA INFILE语句给服务器。选项--local表示mysqlimport将从客户端主机上读取数据文件。如果客户端和服务端之间的网速不好,可以指定--compress选项压缩数据来获取更高的效率。

如果存储引擎支持ALTER TABLE ... DISABLE KEYS,则在LOAD DATA INFILE执行的时候会自动禁用索引,在数据导入结束后再自动启用索引。

Statements using LOAD DATA INFILE have not been considered safe for statement-based replication since MariaDB 5.5.

LOAD DATA INFILE语句会激活INSERT触发器

如果系统变量local_infile设置为0,则无法执行LOAD DATA LOCAL,即无法加载客户端本地文件。

原文地址:https://www.cnblogs.com/everest7/p/10749127.html

时间: 2024-10-04 06:15:26

Load data local infile 实验报告的相关文章

load data local file实验报告

在实验中,我们需要将文本文件中的数据插入数据库的表中 使用如下语句 但是报错 进行如下操作 set globle local_infile='ON',然后退出重新登录MySQL: 再次使用 完成实验. 原文地址:https://www.cnblogs.com/XZY30/p/10774136.html

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

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

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 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

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

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

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带来的安全问题

load data默认读的是服务器上的文件,但是加上local参数后,就可以将本地具有访问权限的文件加载到数据库中,这在带来方便的同时,也带来了以下安全问题, 可以任意加载本地文件到数据库, 在web环境中,客户从web服务器连接,用户可以使用load data local语句来读取web服务器进程有访问权限的任何文件, 解决办法:--local-infile=0 选项启动mysqld 从服务器端禁用所有的load data local 命令. load data local带来的安全问题

mysql导入数据load data infile用法整理

有时候我们需要将大量数据批量写入数据库,直接使用程序语言和Sql写入往往很耗时间,其中有一种方案就是使用MySql Load data infile导入文件的形式导入数据,这样可大大缩短数据导入时间. 假如是从MySql客户端调用,将客户端的文件导入,则需要使用 load local data infile. LOAD DATA INFILE 语句以很高的速度从一个文本文件中读取行到一个表中.文件名必须是一个文字字符串. 1,开启load local data infile. 假如是Linux下