質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

sed

sedとは、POSIX環境のために作られたコマンドラインエディタです。sedは編集スクリプトの指示のもとに複数のファイルを編集し、標準出力にその結果を出力します。

Q&A

0回答

2999閲覧

mysqlをsedでcsv出力する際の加工の仕方

yochun02

総合スコア76

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

sed

sedとは、POSIX環境のために作られたコマンドラインエディタです。sedは編集スクリプトの指示のもとに複数のファイルを編集し、標準出力にその結果を出力します。

0グッド

0クリップ

投稿2020/11/01 15:56

編集2022/01/12 10:55

mysqlをcsv出力する方法として、into outfileを使うほかにlinuxコマンドのsedを使ってtxtデータを加工する方法があるのですが、再度mysqlにインポートできるように加工する方法が知りたいです。

例えば、以下のようなテーブルがあったときに、

SQL

1[mysql] desc users; 2 3+--------------------+------------------------+------+-----+---------------------+----------------+ 4| Field | Type | Null | Key | Default | Extra | 5+--------------------+------------------------+------+-----+---------------------+----------------+ 6| id | bigint unsigned | NO | PRI | NULL | auto_increment | 7| name | varchar(24) | YES | NULL | | 8| updateTime | datetime | NO | | current_timestamp() | | 9+--------------------+------------------------+------+-----+---------------------+----------------+

bash

1$ mysql -uroot -p <Database> -e "select * from users;" | sed -e 's/\t/,/g' > <ファイルパス>/hoge.csv

とすれば、hoge.csvにはすべての値がカンマ区切りで出力されますが、このままではimport時にnameやupdateTimeフィールドがstringやdatetime型として認識されずエラーとなってしまいます。

//hoge.csv id, name, updateTime 1, 田中 太郎, 2020-10-31 20:03:12 2, 鈴木 次郎, 2020-11-01 00:05:45 3, 山田 花子, 2020-10-02 01:01:30 ... .. .

SQL

1[mysql] INSERT IGNORE INTO users SELECT * FROM CSVREAD('<ファイルパス>/hoge.csv', null);

この場合、nameやupdateTimeは""で囲んでcsv上では文字列として格納しなければならないのでしょうか?またその場合特定のカラムは""で囲むようなsedの指定の仕方をしなければならないと思うのですが、どう書けばよいのでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問