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

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

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

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

phpMyAdmin

phpMyAdminはオープンソースで、PHPで書かれたウェブベースのMySQL管理ツールのことです。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

1回答

3820閲覧

MYSQLにおいてCSVをインポートする場合

SugiuraY

総合スコア317

MySQL

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

phpMyAdmin

phpMyAdminはオープンソースで、PHPで書かれたウェブベースのMySQL管理ツールのことです。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2016/10/26 13:08

編集2016/10/26 13:14

お世話になっております。
現在、phpmyadmin>インポート>ファイル選択(XXX.csv)>インポートの実行
という作業を行っております。
そこでインポートされた結果のイメージは下記の通りです。(実際のCSCもフィールド名を除き、以下の値がカンマ区切りで格納されております)
1col 2col 3col 4col
A 2015 100
A 2016 50
B 2016 10
C 2012 20
D 2015 60

ここで3点ご質問させていただきたく存じます。
①上記のように余裕をもたせて4つのフィールドを準備しておき、実際にはcsvには3フィールドだけ情報が入っているのですが、インポートする際、CSV 入力のカラム数が不正です (行: 1)。のエラーが出ます。
実際にcsvをインポートしても例えばidやタイムスタンプ等csv以外のデータを持たせるフィールドをもたせたいことがあると思うのですが、どのようにインポートすれば実現できますでしょうか?

②インポート画面を見るか限り、そのようなオプションはなかったのですが、
実際には1colはスキップして2colから各フィールドの値をインポートしていき、
1colはAIで自動でid番号を振りたいと考えているのですが、phpmyadmin上、そのような操作は可能でしょうか?もちろんcsvの段階で1col目にidを入れてインポートすることや、4col目にAIを設定することは可能ですが、今回はインポート時に1colをスキップして、2col目からインポートする方法をご存知であればご教示ください。

③このようなデータを毎月csvで流し込んでいくのですが、上記のがn月のデータとするとn+1のデータは例えば下記のようなものが想定されます。
1col 2col 3col 4col
A 2016 50
A 2017 200
B 2017 150
ご覧のように2レコード目が既にn月にinsertしたデータと重複しているため、これを除外して、1レコード目と3レコード目だけをインポートしてあげたいと考えております。
SQL文で条件指定をしてinsert intoならなんとかできそうなのですが、対象のデータがcsvなのでインポートする方法しか知らず、このような条件をつけてインポートする方法があるのかと模索しております。そもそもcsvファイルをSQL文で直接インポートする方法があればその方法又はなければcsvから条件付きでphpmyadminからインポートする方法をご教示願えますでしょうか。

何卒、よろしくお願い申し上げます。

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

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

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

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

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

guest

回答1

0

ベストアンサー

(1) テーブルにフィールドが4つあるのであれば、CSVも
4フィールド準備してみてはいかがですか。
どのような形のCSVかはわかりませんが、改行をレコードの
セパレータとして認識させているのならば、
改行の1つ手前にカンマを入れておけば空フィールド扱いになりませんか。

(2)(3) phpmyadminはあまり触ったことがないので
確定的なことは言えませんが、その手の自動番号処理は
苦手だったと記憶しています。

ゆえにいったんすべてのデータを格納するワークテーブルを作成し
そこからSQLでデータを取得する手法がいかがですか。

例えば(2)であれば、取り込み後、
insert into 対象テーブル (select '', 2col,3col,'' from ワークテーブル)
で処理が可能です。

(3)はやや悩みますね、オートで番号を振った後ではAなのかBなのか、
比較のしようがないので、今わかっている情報でいくと、
insert into 対象テーブル
(select '', 2col,3col,'' from ワークテーブル
where 2col > (select max(2col) from 対象テーブル)
)
と、言った感じでしょうか。

とりあえず、わかっている情報で答えてみました。

投稿2016/10/26 14:02

akio221

総合スコア716

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

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

SugiuraY

2016/10/26 14:09

ご回答ありがとうございます。 確かに一度dummyのようなテーブルをかませて本ちゃんに移動させる方法はありですね。mysqlに慣れている方には当然の発想なのかもしれませんが、目からウロコでした。早速実践してみます! よろしくお願い申し上げます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問