タグ

SQLに関するkenjiro_nのブックマーク (79)

  • SQLite3でUpsertを実行する

    似たような処理にreplaceがあるが、 replaceはレコード(行)を丸ごと入れ替える(delete/insert)のに対し、 upsertはカラムを指定してレコードを更新する。 SQLite3 でレコードがあれば置換、なければ新規挿入する (replace) 公式 によると PostgreSQL の構文を利用しているとのこと。 Microsoft SQLServer や Oracle の「merge(マージ)」構文に近い使い方だが mergeは重複の判定にUniqueカラム以外のものを指定できたりする。 実行例 「upsert」というコマンドがあるわけではなく、 on conflict文を使い キーが重複した場合の処理を指定することができる。 on conflict文は sqlite のバージョン3.24.0 から利用可能。 環境 Windows 10 sqlite3 (3.24.0

  • 第158回 Invisible Columnsの使いどころ | gihyo.jp

    MySQL 8.0.23では、新たな機能としてInvisible Columnsが導入されました。この機能は、あるカラムを「存在はしているけれども明示的に指定しない場合は参照しないカラムとして扱う」ことができるようになっています。今回はこのInvisible Columnsの機能について見ていきましょう。 なお、似た機能である、invisible indexesについては第110回 Invisible Indexesを使って気軽にチューニングを始めてみるで紹介しておりますのでそちらをご参照ください。また、今回利用しているMySQLのバージョンは8.0.26となります。 Invisible columnsのあるテーブルの作成 Invisibleなカラムのあるテーブルを作成するには、InvisibleにしたいカラムにINVISIBLEをつけてCREATE TABLE文で実行するか、ALTER

    第158回 Invisible Columnsの使いどころ | gihyo.jp
    kenjiro_n
    kenjiro_n 2023/01/26
    SELECT * FROM HOGE; では取得できない列を設定できるという話。罠っぽい。
  • SQLを速くするぞ―お手軽パフォーマンス・チューニング

    このサイトでは、SQL を高速化するためのちょっとしたパフォーマンス・チューニングの技術を紹介します。と言っても、『プログラマのためのSQL 第2版』の受け売りがほとんどなので、このを読んでいただければ、稿を読む必要はありません。 最初に、パフォーマンス・チューニングに関する全体の方針を述べておくと、それはボトルネック(一番遅いところ)を改善することです。当たり前ですが、既に十分速い処理をもっと速くしたところで、システム全体のパフォーマンスには影響しません。従って「処理が遅い」と感じたら、最初にすることは、SQL やアプリの改修ではなく、「どこが遅いのか」を調査することです。いきなりあてずっぽうで改善をはじめても効果は出ません。医者が患者を診るとき最初にすることが検査であるのと同じです。病因が何であるかを突き止めてからでないと、正しい処方はできないのです。 その基を承知していただいた

  • SQLiteで構造体リストをそのままinsertしたい

    一括挿入によると SQLite には、データを一括挿入するための特別な方法はありません。 データの挿入または更新時に最適なパフォーマンスを得るには、以下を行ってください。 トランザクションの使用。 同じパラメーター化コマンドの再利用。 後続の実行で、最初の実行のコンパイルを再利用します。 と案内されています。 マシン環境が異なるので所要時間が異なりますが、 takemori_kondoさんのコード: 402ms 一括挿入: 230ms 一括挿入からtranをコメントアウト: 243,755ms と愚直にループしてもかなり高速になります。 #if false foreach (var group in list.Select((hv, i) => (hv, i)).GroupBy(x => x.i / 1000)) { using var cmd = conn.CreateCommand()

    SQLiteで構造体リストをそのままinsertしたい
  • Sqlime - Online SQLite playground

    Sqlime is an online SQLite playground for debugging and sharing SQL snippets.

    Sqlime - Online SQLite playground
  • JSON や CSV で SELECT * FROM したいときは columnq-cli が便利

    techfeed 経由で下記のスレッドを見かけたのですが、タイトルだけでも既に面白そうです。 また、ちょっと前から Notion のデータベースを各種コンテンツへ変換するツールを作っていまして、これを組み合わせるといろいろ楽できそうな予感がします。 そのようなわけで、スレッドで紹介されていた columnq-cli についての記事です。 columnq-cli とは? README を読むと「各種データをテーブルとして SELECT できるようにする CLI ツール」で、テーブルソースには JSON などの他に ROAPI でサポートされているものを扱えるとのこと。 (SELECT のみで更新はできない) ここで ROAPI とはなんぞやとなりますが、こちらは「ローカルのファイルシステムや各種サービスのデータを統合的に扱える(SELECT できる)サーバー」を構築できるそうです。 図 1-

    JSON や CSV で SELECT * FROM したいときは columnq-cli が便利
    kenjiro_n
    kenjiro_n 2022/10/03
    テーブル定義なしだったら面白そう。そうでなければSQLiteに食わせるのが速そうだし。
  • AccessがSQLの括弧を勝手に消す - OKWAVE

    Access2010 でクエリをSQLビューで記述し、保存して閉じると 次にSQLビューを開いたときにSQLが変わってます。 改行が消されてたり、()括弧が消されてたり。 改行はまだいいんです。読み難さを我慢するだけなので。 でも()括弧を消した結果、SQL文法エラーになることがあり、 (それも他のDBでは正常に判定されるような、Access独自の構文解釈エラー) そうなるとSQLビューで開けず修正できず、泣く泣くクエリを作り直すハメになります。 ()括弧を勝手に消しておいて、文法エラーだから作り直せ なんて、 Accessは頭悪いとしか思えません。。。 勝手に変更されないようにできませんかね?

    AccessがSQLの括弧を勝手に消す - OKWAVE
    kenjiro_n
    kenjiro_n 2022/08/18
    今回故あってUNION ALLの多段重ねがあるSQLを書き、再度開いたときに改行がなくなり難儀していたが「オプションの「名前の自動修正」のところをすべてオフにする。」という設定で事なきを得た。
  • ER図の自動生成について、dbdiagram.io, DBeaver, A5M2 を比較してみる。 - Qiita

    はじめに データベース設計のER図について、自動で生成する以下3つのツールを比較した記事です。 dbdiagram.io DBeaver A5:SQL Mk-2(A5M2) 先日、こちらの記事をQiitaに投稿したところ、多くの方に記事を見ていただき、コメントも多数いただきました。 ER図に関するお勧めのツールをコメントいただく方が多くいらっしゃいました。 今回はその中から、無料でも利用できる3つのツールの「ER図の自動生成」の機能を試します。 比較の結論としては、〇〇が一番良いという感想ではなく、どのツールも多機能で、できることは違うので、今後使うときは用途や業務の環境によって使い分けていけたらと思っています。 目次 それぞれのツールについて、下記の内容を書いていきます。 1. dbdiagram.io 1-1. 始める 1-2. 使う 1-3. 感想 2. DBeaver 2-1. 始

    ER図の自動生成について、dbdiagram.io, DBeaver, A5M2 を比較してみる。 - Qiita
    kenjiro_n
    kenjiro_n 2022/08/16
    MacでWin用ソフトのA5M2が使えるのかと驚いたけど、さすがに別記事があらかじめある程度には手間のかかる話のようで。/って単にWINEを入れるだけの話かーい。
  • 【解説】データサイエンス100本ノックの始め方

    記事は、M1 Macbookを用いた手順になります。 WindowsPCの方は、適宜読み替えて実施していただければと思います。 なお、ブログでは、データサイエンス100ノックの全解答解説を掲載しています。 ブックマークなどして答え合わせに役立てていただければと思います。 データサイエンス100ノックの回答集 | タグ: datascience - omathin blog DockerのインストールまずはDockerをインストールしましょう。 以下の記事にまとめられている方法で導入可能です。 https://qiita.com/ao41/items/5feb96cd01c312407a2b 記事におけるDockerDocker Composeのバージョンは以下のとおりです。 terminal$ docker --version Docker version 20.10.1,

    【解説】データサイエンス100本ノックの始め方
  • 「データサイエンス100本ノック」の生みの親はなぜ「3言語のサポート」と「Docker」にこだわったのか

    2020年6月15日、一般社団法人データサイエンティスト協会(以下、データサイエンティスト協会)は、データサイエンス初学者が構造化データの集計・加工を効率的に学べる演習環境「データサイエンス100ノック(構造化データ加工編)」を、「GitHub」で無償公開した。公開直後からデータサイエンスに関わる技術者の間で大きな話題を集め、その内容や利用法を紹介するコンテンツがネット上で数多く公開された。 このデータサイエンス100ノックの「生みの親」ともいえるのが、データ解析設計事務所の森谷和弘氏だ。同氏はフリーランスのデータサイエンティストとして活動する傍ら、データアナリティクスラボの取締役CTO(最高技術責任者)として、データサイエンティスト人材を一から育成して企業に派遣する事業に携わっている。 稿では、データサイエンス100ノックのこだわったポイントや活用するためのコツ、今後の展望につい

    「データサイエンス100本ノック」の生みの親はなぜ「3言語のサポート」と「Docker」にこだわったのか
  • 社内SQL研修のために作った資料を公開します | 株式会社AI Shift

    こんにちは、Development Teamの三宅です。 先日、社内(AI事業部内)でSQL研修の講師を担当したので、今回はその内容について簡単に共有したいと思います。 はじめに 例年、AI事業部では、新卒エンジニアの育成のためにソフトウェアエンジニア研修を行っております。今年はフルリモートでの実施となりました。研修期間は2週間ほどで、内容は前半が講義、後半が実践(チーム開発)でした。私が担当したのは、講義パートの一部であるSQL研修です。SQLRDBにあまり慣れていない人でも、できるだけ体系的な学びが得られるようにすることを目標に、様々な資料をまとめて提供する方針で準備しました。結果的には、ハンズオン込みで4時間ほどのやや長い講義となりましたが、勉強になったという声も頂けたのでやって良かったと思っています。 研修資料 研修内容 SQL研修の内容は、基的には大学のデータベース講義で

    社内SQL研修のために作った資料を公開します | 株式会社AI Shift
  • ER Master

    <body> <span>このページはフレーム対応のブラウザでご覧ください。</span> </body>

  • Excelの定義書からVBAでSQLを作成する

    CREATE文を作成するマクロ とりあえず、最も使いそうなCREATE文(DDL)を作成するVBAマクロを作ってみることにしました。 ソースは以下になります。 '=====定数定義===== 'テーブル物理名のセル番号 Private Const COL_TABLE_NAME As Integer = 4 Private Const ROW_TABLE_NAME As Long = 1 'テーブル論理名のセル番号 Private Const COL_TABLE_COMMENT As Integer = 4 Private Const ROW_TABLE_COMMENT As Long = 2 '項目開始行 Private Const ROW_COLUMNS_START As Long = 5 '項目の列定義 Enum enm_columns NO = 2 'No COLUMN_NAME '

    Excelの定義書からVBAでSQLを作成する
  • ExcelからCreate文を | SQLServer大好き

    Excelに記入したテーブル定義から、Create文をマクロで作成します。 Create文作成マクロ入りExcelcreate_table_macro.xls テーブル定義書Excel:table_doc_sample.xlt ~使い方~ 1.C:\workフォルダを作成します。 2.テーブル定義書EXCELファイルを開いて、作成したいテーブルのシートを選択します。 テーブル定義書のサンプル:table_doc_sample.xlt 3.テーブル作成マクロ入りEXCELのマクロを実行します。 4.C:\work\create.txtが出来上がります。 作成されたcreate文を使って、DBにテーブルを作成します。 0 people found this article useful This article was helpful This article was helpful 0 p

  • Oracle で DDL を取得する - ふなWiki

    DDLの取得 DBMS_METADATA.GET_DDL GET_DDLを使うとDDLを取得できる。 DDLの出力形式を変更する https://siguniang.wordpress.com/2013/09/04/oracle-dbms_metadata-get_ddl-fetch-ddl-for-tables/ https://www.toadworld.com/platforms/oracle/b/weblog/archive/2015/11/25/get-ddl-and-set-transform-param-in-dbms-metadata https://stackoverflow.com/questions/6782278/generating-ddl-script-for-object-without-schema-name-baked-in-using-dbms-meta

  • 【Oracle】直近5分以内に実行したSQLの履歴とバインド変数を確認する - 小さい頃はエラ呼吸

    はじめに アプリケーションから発行したSQLがうまく動作しない場合、発行したSQLが分かれば調査の手がかりとなります。Oracleのv$sqlを参照すると、実行したSQLの履歴とバインド変数を確認することができます。 ざっくり言うと SQLの実行履歴はv$sqlテーブルを見ると分かる。 行が多すぎるため、SQLの断片を検索条件に含めると良い。 バインド変数の確認はv$sql_bind_captureを見ると分かる。 新・門外不出のOracle現場ワザ エキスパートが明かす運用・管理の極意 (DB Selection)posted with amazlet at 15.06.06小田 圭二 大塚 信男 五十嵐 建平 谷 敦雄 宮崎 博之 神田 達成 村方 仁 翔泳社 売り上げランキング: 76,494 Amazon.co.jpで詳細を見る 直近5分間に実行されたSQLを参照する 以下のクエリ

    【Oracle】直近5分以内に実行したSQLの履歴とバインド変数を確認する - 小さい頃はエラ呼吸
  • OracleのCLOBデータを文字列(VARCHAR2)で取得・表示する

    dbms_lob.substr(CLOB型のカラム名,1000,1) AS column1 で、column1に実際の文字列データが入りますが、column1はVARCHA2型に暗黙で変換されるので、最大値は4000バイトということになるんですよね。。。 SQLを投げたときに下記のエラーが出てしまう場合は、バイト数がVARCHAR2に入る最大値を超えていないか確認してみましょう。 ORA-06502: PL/SQL: 数値または値のエラー: 文字列バッファが小さすぎます。が発生しました。 ORA-06512 “PL/SQL: numeric or value error%s”

    OracleのCLOBデータを文字列(VARCHAR2)で取得・表示する
  • SQL記述者全員が理解すべきSELECT文の論理的な処理順序のお話 - Qiita

    2020/9/30追記 記事は元々、「SQL記述者全員が理解すべきSELECT文の実行順序のお話」というタイトルで投稿しておりました。 しかし、知見のある方からのコメントと自分でも調べてみた結果、今回紹介している順序はあくまで論理的な処理順序であり、実行順序とは別物ということがわかりました。 誤った知識を布教してしまい申し訳ございません。 2020/9/30のタイミングで、記事のタイトルを「SQL記述者全員が理解すべきSELECT文の論理的な処理順序のお話」に変更させていただきました。 はじめに 「SQLといえば、エンジニアが扱うスキル」と思われがちですが、最近はマーケターや営業など、非エンジニアの方もSQLを使って、自らデータを抽出し分析する方が増えてきています。 またエンジニアの方でも、ORM任せでなんとなく理解している状態の方もいるのではないでしょうか? 今回は、そんな方々にこそ

    SQL記述者全員が理解すべきSELECT文の論理的な処理順序のお話 - Qiita
  • すべてのエディタでSQLの自動補完をするためにSQL Language Server(sqls)を作った - Qiita

    sqlsとは sqlsとは、いま私が開発中のSQL用Language Serverです。SQLをエディタで編集するときの支援機能を実装したサーバとなっており、主な特徴は以下です。 Language ServerなのでLSクライアントが存在するエディタであればどんなエディタでも利用可能 SQL編集支援機能 自動補完(テーブル名、カラム名など) 定義参照 SQL実行 複数のRDSMSに対応 MySQL PostgreSQL SQLite3 Language Serverとは Language Server(あるいはLanguage Server Protocol)とは、プログラム言語の開発支援機能をエディタに提供するサーバ、およびその通信内容を規定したプロトコルです。ただしサーバといってもほとんどの場合ローカル内にホスティングしてローカルのエディタと通信をします。 ここでは主題ではないので詳し

    すべてのエディタでSQLの自動補完をするためにSQL Language Server(sqls)を作った - Qiita
  • LINQ to SQLで複合キーのExists句を書く - modest violet

    単一のExists句を表す場合はContainsを使用していましたが、複数のキーでExistsを実現させねばならない状況に陥ったので、勉強がてらにまとめました。 単一キーのExistsの場合 基となるSQL SELECT * FROM table_A as A WHERE EXISTS ( SELECT * FROM table_B As B WHERE A.Key1 = B.Key1 ) メソッド式(C#) table_A .Select(s => s) .Where(t1 => table_B.Select(t2 = > t2.Key1) .Contains(t1.Key1) ポイントは、table_Bで一致させたい項目をSelectで絞り込んだ結果に対して、Containsを行う点です。 IN句に近いイメージですが、生成されるSQLはEXISTSになります。 複合キーのExistsの

    LINQ to SQLで複合キーのExists句を書く - modest violet