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

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

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

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

MySQL

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

Q&A

解決済

1回答

1153閲覧

括り記号付きのCSVをMySQLにインポート後、括り記号は削除すべき?

fukazume

総合スコア78

CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

MySQL

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

0グッド

0クリップ

投稿2020/07/16 07:13

編集2020/07/16 08:04

###経緯
先に MySQLにCSVをインポートする際のベストプラクティス という質問をさせていただき、自分の中での結論といたしまして「括り記号(ダブルクォーテーションなどの)によってフィールド区切りをより厳密に明示していこう」と決意するに至りました。

##質問
しかしながら、いざダブルクォーテーションで括られたデータをMySQLにインポートして値を取り出そうとすると、当たり前ですが"値"というように常にダブルクォーテーションが一緒に付いてきます。

このような状態を回避して純粋に括り記号なしの値のみを取り出したい場合、

  • MySQL側で括り記号を消してクリーンにすべきでしょうか?
  • それとも値を取り出すプログラム側(Pythonなど)で括り記号をクリーンに取り除くべきでしょうか?

一般的な括り記号付きデータのハンドリング方法をお教えいただけますと、誠にありがたく存じます。どうぞよろしくお願い申し上げます。

追記
saziさん
ありがとうございます!私のポカミスもありました。

■コマンド
mysql> LOAD DATA LOCAL INFILE "C:/Users/test/dev/data.csv"
-> INTO TABLE data
-> FIELDS TERMINATED BY ','
-> OPTIONALLY ENCLOSED BY '"'
-> LINES TERMINATED BY '\n'
-> IGNORE 1 LINES
-> (@datetime, @title, @url)
-> SET datetime=@datetime, title=@title, url=@url
-> ;

■ソース
"Mon, 22 Jun 2020 13:03:11 +0900","""タイトル""",

というような構造になっていて、そのタイトル部をPythonで呼び出して「""」となっていました。

お手数おかけいたしました。でもおかげさまで解決まですぐにたどり着くことができました。ありがとうございます!

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

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

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

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

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

sazi

2020/07/16 07:20

実行している、LOAD DATA INFILEのオプションに問題があると思いますので、インポートするデータと実行したコマンド(LOAD DATA INFILE)も質問に追記して下さい。
fukazume

2020/07/16 07:26

早速ありがとうございます!以下のようなコマンドでデータをインポートしました。 mysql> LOAD DATA LOCAL INFILE "C:/Users/test/dev/data.csv" -> INTO TABLE data -> FIELDS TERMINATED BY ',' -> OPTIONALLY ENCLOSED BY '\"' -> LINES TERMINATED BY '\n' -> IGNORE 1 LINES -> (@datetime, @title, @url) -> SET datetime=@datetime, title=@title, url=@url -> ;
sazi

2020/07/16 07:30

こちらへコメントするのではなく、質問を編集して下さい。 また、合わせて、サンプルのデータも追記して下さい
guest

回答1

0

ベストアンサー

SQL

1OPTIONALLY ENCLOSED BY '"'

として下さい。
エスケープ()がある為に、インポート時に区切り記号が除去されていません。

投稿2020/07/16 07:59

sazi

総合スコア25195

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問