ホームページ  >  記事  >  データベース  >  フォーマットされたデータを MySQL にインポートする方法

フォーマットされたデータを MySQL にインポートする方法

青灯夜游
青灯夜游転載
2019-03-28 11:49:482340ブラウズ

フォーマットされたデータを MySQL にインポートするにはどうすればよいですか?この記事では、フォーマットされたデータを MySQL にインポートする方法を紹介します。一定の参考値があり、必要な友人が参考にすることができます。お役に立てば幸いです。

一部のシナリオでは、特定の形式のデータのバッチを mysql データベースにインポートする必要があります。これを行うには多くの方法があります。シェル スクリプトまたは Python を使用できます。今日は、より便利な 2 つの方法を紹介しますコマンド mysqlimport および load 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

Common options

--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) フィールド キーワードは、ファイル フィールドの分割形式を指定します。このキーワードが使用される場合、MySQL パーサーは次の少なくとも 1 つを参照することを期待します。オプション:

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」です。指定されたフィールドは行の前に置く必要があります。 field キーワードを指定しない場合、デフォルト値は次のように記述した場合と同じになります。行句を指定します。デフォルト値は次と同じです:

linesterminated by'\n'


例: <pre class="brush:php;toolbar:false">mysql&gt; load data infile &quot;/root/load.txt&quot; replace into table test fields terminated by ',' lines terminated by '/n';</pre>5、load data infile は次のようにファイルをロードできます。指定した列にデータベースにインポートします。データの一部をインポートしたい場合は、追加のニーズを満たすために、MySQL データベースにいくつかの列 (列/フィールド/フィールド) を追加する必要があります。たとえば、Access データベースから MySQL データベースにアップグレードする場合、
次の例は、指定した列 (フィールド) にデータをインポートする方法を示しています:<pre class="brush:php;toolbar:false">mysql&gt; load data infile &quot;/home/root/campaign.txt&quot; into table campaign(id, name, creator);</pre>6. server host の場合、サーバーは次のルールを使用します。

● 絶対パス名が指定された場合、サーバーはそのパス名を使用します。


● 1 つ以上の先行コンポーネントを含む相対パス名が指定された場合、サーバーはサーバーのデータ ディレクトリを基準にしてファイルを検索します。

● プレフィックスのないファイル名が指定された場合、サーバーは現在のデータベースのデータベース ディレクトリでファイルを検索します。

例: /campaign.txt はサーバーのデータ ディレクトリから読み取られ、campaign.txt は現在のデータベースのデータベース ディレクトリから読み取られます。

おすすめのビデオ チュートリアル: 「

MySQL チュートリアル

以上がこの記事の全内容です。皆様の学習にお役に立てれば幸いです。さらにエキサイティングなコンテンツについては、PHP 中国語 Web サイトの関連チュートリアルのコラムに注目してください。 ! !

以上がフォーマットされたデータを MySQL にインポートする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はsegmentfault.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。