>  기사  >  데이터 베이스  >  형식화된 데이터를 MySQL로 가져오는 방법

형식화된 데이터를 MySQL로 가져오는 방법

青灯夜游
青灯夜游앞으로
2019-03-28 11:49:482272검색

MySQL에서 형식이 지정된 데이터를 가져오는 방법은 무엇입니까? 이 기사에서는 형식화된 데이터를 MySQL로 가져오는 방법을 소개합니다. 이는 특정 참고 가치가 있으므로 도움이 필요한 친구들이 참고할 수 있기를 바랍니다.

일부 시나리오에서는 특정 형식의 데이터를 mysql 데이터베이스로 가져와야 하는 경우가 있습니다. 이를 수행하는 방법에는 여러 가지가 있습니다. 오늘은 라는 두 가지 편리한 명령을 사용할 수 있습니다. >mysqlimport code> 및 <code>데이터 로드mysqlimportload data

mysqlimport

使用方法

mysqlimport [options] db_name textfile1 [textfile2 ...]
# db_name 对应数据库名称
# textfile 文件名,对应要插入的数据库表名
# 比如:mysqlimport a8 campaign.txt 会把campaign.txt中的数据插入到a8数据库中的campaign表

注意:campaign.txt文件必须在/usr/local/mysql/var/a8/目录下,即数据库所在目录

如果不在对应的目录下,会返回以下错误:

mysqlimport -uroot -p123456 -hlocalhost -P3306 a8 campaign.txt 
/usr/local/mysql/bin/mysqlimport: Error: File '/usr/local/mysql/var/a8/campaign.txt' not found (Errcode: 2), when using table: campaign

常用选项

--columns=id,name,creator...
# 对应的数据表列名,定义被导入文件中的每一列对应的数据库表列名

--fields-terminated-by=
# 文件字段以什么分隔,参数为字符串,默认为\t

--fields-enclosed-by=
# 数据域用什么符号扩起来,默认为空,一般可以是双引号、括号等

--fields-optionally-enclosed-by=
# 数据域可以用什么符号括起来,因为为只有部分数据用这些符号括起来

--fields-escaped-by=
# 转义字符,参数为字符,默认为\

--lines-terminated-by=
# 数据行以什么结束,参数为字符串,windows默认为\r\n

--user=user_name 或 -u user_name
--password=[password] 或 -p[password]
--host=host_name 或 -h hostname
--port=port_num,或 -P port_num
# 定义用户名、密码、mysql服务器地址和用于连接的TCP/IP端口号,默认为mysql默认端口3306

--ignore-lines=n
# 忽视数据文件的前n行,因为很多数据文件前面有表头

--delete -D
# 在把文件中的数据插入前删除表中原先的数据

--local -L
# 指定从客户端电脑读入数据文件,否则从服务器电脑读取

--lock-tables -l
# 处理文本文件前锁定所有表以便写入,确保所有表在服务器上保持同步

--protocol={TCP | SOCKET | PIPE | MEMORY}
使用的连接协议

--force -f
#忽视错误。例如,如果某个文本文件的表不存在,继续处理其它文件,不使用--force,如果表不存在则mysqlimport退出

--compress -C
# 压缩在客户端和服务器之间发送的所有信息(如果二者均支持压缩)

--silent,-s
# 沉默模式,只有出现错误时才输出

--socket=path,-S path
# 当连接localhost时使用的套接字文件(为默认主机)

--verbose,-v
# 冗长模式。打印出程序操作的详细信息。

--version,-V
# 显示版本信息并退出。

load data

使用方法

mysql> load data [low_priority] [local] infile 'file_name txt' [replace | ignore]
into table tbl_name
[fields]
[terminated by '\t']
[OPTIONALLY] enclosed by '']
[escaped by '\' ]]
[lines terminated by 'n']
[ignore number lines]
[(id,name,creator)]

说明:

load data infile语句是将文本数据导入到数据表中。使用这个命令之前,mysqld进程(服务)必须已经在运行。使用前请确保有文件的读取权限

1、如果你指定关键词low_priority,那么MySQL将会等到没有其他人读这个表的时候,才把插入数据。可以使用如下的命令:

mysql> load data low_priority infile "/home/root/data.sql" into table campaign;

2、如果指定local关键词,则表明从客户主机读文件。如果local没指定,文件必须位于服务器上。

3、replace和ignore关键词控制对现有的唯一键记录的重复的处理。如果你指定replace,新行将代替有相同的唯一键值的现有行。如果你指定ignore,跳过有唯一键的现有行的重复行的输入。如果你不指定任何一个选项,当找到重复键时,出现一个错误,并且文本文件的余下部分被忽略。例如:

mysql> load data low_priority infile "/home/root/data.sql" replace into table campaign;

4、分隔符

1)fields关键字指定了文件字段的分割格式,如果用到这个关键字,MySQL剖析器希望看到至少有下面的一个选项:

terminated by:分隔符,字段是以什么字符作为分隔符
enclosed by:字段括起字符,例:` "周丽","10","学习很好" ` 这样的一行,就需要这么写 ` ENCLOSED BY '"' `
escaped by:转义字符
lines terminated by:描述字段的分隔符,默认情况下是tab字符(\t) 
ignore number lines:用来忽略导入文件的开始的行。例如:number=1,则忽略导入文件的第一行数据。

例如:

mysql> load data infile "/home/root/data.sql" replace into table campaign fields terminated by',' enclosed by '"';

2)lines 关键字指定了每条记录的分隔符默认为'n'即为换行符
如果两个字段都指定了那fields必须在lines之前。如果不指定fields关键字缺省值和这样写是相同的:fields terminated by't' enclosed by ’ '' ‘ escaped by'\'
如果你不指定一个lines子句,缺省值和这样写是相同的: lines terminated by'n'
mysqlimport

Usage

mysql> load data infile "/root/load.txt" replace into table test fields terminated by ',' lines terminated by '/n';
참고 : 캠페인.txt 파일은 데이터베이스가 위치한 디렉토리인 /usr/local/mysql/var/a8/에 있어야 합니다

해당 디렉토리에 없으면, 다음 오류가 반환됩니다.

mysql> load data infile "/home/root/campaign.txt" into table campaign(id, name, creator);
Common options

rrreee

데이터 로드

Usage

rrreee

지침:

load data infile 문은 텍스트 데이터를 데이터 테이블 중간으로 가져오는 것입니다. 이 명령을 사용하기 전에 mysqld 프로세스(서비스)가 실행 중이어야 합니다. 사용하기 전에 파일에 대한 읽기 권한이 있는지 확인하세요

1. low_priority 키워드를 지정하면 MySQL은 데이터를 삽입하기 전에 다른 사람이 테이블을 읽을 때까지 기다립니다. 다음 명령을 사용할 수 있습니다:

rrreee

2. local 키워드를 지정하면 클라이언트 호스트에서 파일을 읽는다는 의미입니다. local이 지정되지 않은 경우 파일은 서버에 있어야 합니다. 🎜🎜3. 교체 및 무시 키워드는 기존 고유 키 레코드의 중복 처리를 제어합니다. 바꾸기를 지정하면 새 행이 기존 행을 동일한 고유 키 값으로 바꿉니다. 무시를 지정하면 고유 키가 있는 기존 행에 대한 중복 행 입력을 건너뜁니다. 두 옵션 중 하나를 지정하지 않으면 중복된 키가 발견되면 오류가 발생하고 텍스트 파일의 나머지 부분은 무시됩니다. 예: 🎜rrreee🎜4. Delimiter 🎜🎜1) fields 키워드는 파일 필드의 분할 형식을 지정합니다. 이 키워드를 사용하면 MySQL 프로파일러는 다음 옵션 중 하나 이상을 확인합니다. 🎜 rrreee🎜2) 행 키워드는 각 레코드의 구분 기호를 지정합니다. 기본값은 줄바꿈 문자인 'n'입니다. 두 필드가 모두 지정된 경우 필드는 행 앞에 와야 합니다. fields 키워드를 지정하지 않으면 기본값은 다음과 같습니다. '\'로 이스케이프된 ''''으로 묶인 't'로 끝나는 필드🎜라인을 지정하지 않는 경우 절, 기본값은 다음과 같이 작성하는 것과 같습니다: 'n'으로 끝나는 줄 🎜예: 🎜rrreee🎜5. 로드 데이터 infile은 지정된 열을 기준으로 데이터베이스로 파일을 가져올 수 있습니다. 데이터의 일부를 가져오려면 몇 가지 추가 요구 사항을 충족하기 위해 MySQL 데이터베이스에 일부 열(열/필드/필드)을 추가해야 합니다. 예를 들어 Access 데이터베이스에서 MySQL 데이터베이스로 업그레이드하려는 경우 🎜다음 예에서는 지정된 열(필드)로 데이터를 가져오는 방법을 보여줍니다. 🎜rrreee🎜 6. 서버 호스트에서 파일을 찾을 때 서버는 다음을 사용합니다. 다음 규칙을 따릅니다.🎜🎜● 절대 경로명이 주어지면 서버는 해당 경로명을 사용합니다. 🎜🎜● 하나 이상의 선행 구성 요소가 포함된 상대 경로 이름이 제공되면 서버는 서버의 데이터 디렉터리에 상대적인 파일을 검색합니다. 🎜🎜● 접두사 없이 파일명을 지정하면 서버는 현재 데이터베이스의 데이터베이스 디렉터리에서 해당 파일을 찾습니다. 🎜🎜예: /campaign.txt는 서버의 데이터 디렉터리에서 읽혀지고,campaign.txt는 현재 데이터베이스의 데이터베이스 디렉터리에서 읽혀집니다. 🎜🎜추천 관련 동영상 튜토리얼: "🎜MySQL Tutorial🎜"🎜🎜위 내용은 이 글의 전체 내용이며, 모든 분들의 학습에 도움이 되기를 바랍니다. 더 흥미로운 내용을 보려면 PHP 중국어 웹사이트의 관련 튜토리얼 열을 주의 깊게 살펴보세요! ! ! 🎜

위 내용은 형식화된 데이터를 MySQL로 가져오는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 segmentfault.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제