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

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

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

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

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

sh

shは、UNIX系OSのシェル操作の1つであり、最も基本的なシェルのことです。

Q&A

解決済

3回答

17221閲覧

csvデータをsql(insert)に変換

enigumalu

総合スコア192

CSV

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

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

sh

shは、UNIX系OSのシェル操作の1つであり、最も基本的なシェルのことです。

0グッド

0クリップ

投稿2018/01/30 09:42

編集2018/01/30 10:14

ac_id,limit_id,data_idという3カラムのデータを抽出してcsvファイルにしたんですが
すべての項目(全部文字列)をsqlでinsertしたいのですがsqlのinsert文を生成する良い方法は無いでしょうか?
今はsh形式を考えています。結局エクセルが早かったりするのかなと考えてます
dbはmysqlです

CREATE TABLE `ac_camp` ( `ac_id` varchar(17) NOT NULL, `limit_id` char(10) NOT NULL, `data_id` char(6) NOT NULL, `reg_id` varchar(100) NOT NULL, `reg_datetime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, `upd_id` varchar(100) NOT NULL, `upd_datetime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, `delete_flg` char(1) NOT NULL DEFAULT '0', PRIMARY KEY (`ac_id`,`data_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC

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

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

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

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

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

guest

回答3

0

DBのテーブル構造とデータファイルのデータ構造は一致してるんですよね?
(ファイルのデータはac_id,limit_id,data_idに該当するデータの並びになって格納されている)
でしたら、工夫してinsert文を作るよりもLOAD DATA INFILEを使ったほうが楽です。
LOAD DATA INFILE構文:MySQLリファレンス

いわゆるエクスポートしたデータをインポートすると言ったことだと思うのですが、大概のDBにはエクスポート/インポートに対応したコマンドなどが用意されているはずです。そうしたコマンドが無い場合は頑張ってINSERT文を作って1件1件挿入するといったことをしなければなりませんが、インポート用のコマンドが用意されている場合はそちらを使った方が手間もかかりませんし、確実です。

投稿2018/01/30 12:58

archiver

総合スコア1557

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

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

0

ベストアンサー

既に存在するCSVからinsert文を生成したいということでしたら、こんな感じでどうでしょう。

bash

1cat hoge.csv | awk -F',' '{ printf "INSERT INTO tablename VALUES (\x27%s\x27,\x27%s\x27,\x27%s\x27);",$1,$2,$3;print ""}'

hoge.csvtablename は適宜置き換えてください。

投稿2018/01/30 10:09

alg

総合スコア2019

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

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

enigumalu

2018/01/30 10:32

ありがとうございます printなのでlogに出るのを確認したのですが printの部分をファイル出力にすればファイル化できますでしょうか?
alg

2018/01/30 10:53

最後に ` >insert.txt` などとリダイレクトすれば、ファイルに保存できます。 ```bash cat hoge.csv | awk -F',' '{ printf "INSERT INTO tablename VALUES (\x27%s\x27,\x27%s\x27,\x27%s\x27);",$1,$2,$3;print ""}' >insert.txt ```
guest

0

データベースは何でしょうか?
Object Browser が使えるデータベースなら INSERT文で出力できます。
https://products.sint.co.jp/siob

CREATE TABLE文も提示した方が良いです。
Oracleでしたら
SELECT 'INSERT INTO TBL(ac_id, limit_id, data_id) VALUES(' || TO_CHAR(T.ac_id) || ', ' || TO_CHAR(T.limit_id) || ', ' || TO_CHAR(data_id) || ') ;' AS INSERT_SQL
FROM TBL T ;
といったSQLが考えられます。

投稿2018/01/30 09:52

Orlofsky

総合スコア16415

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

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

enigumalu

2018/01/30 10:13

失礼しましたdbはmysqlです,create分に関しては記載しまし Object Browserというのは有償製品なのでしょうか
Orlofsky

2018/01/30 10:18 編集

データベースはタグで追加してください。insert文の生成するSQLは参考程度で願います。 Object Browserは有料ですが、30日間試用できます。上記URLをご覧ください。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問