SQLFluffって何? Fishtown Analytics社(dbtを作っている会社)が作ったSQLのリントツールです。 Dataformやdbt等を活用することで、多人数でのSQLのメンテナンスを実行していく上でコーディング規約の策定やその準拠が出来ているかというのを継続的に保つ必要性がでてくると思います。 このSQLFluffは他のプログラム言語でよくあるリントがある開発を導入することができます。 SQLFluff インストール
※この投稿は米国時間 2021 年 1 月 29 日に、Google Cloud blog に投稿されたものの抄訳です。 オブジェクト リレーショナル マッピング(ORM)を使用すると、任意のプログラム言語のアプリケーション コードと自然に統合される、オブジェクト指向の枠組みを使用したクエリを容易に作成できるようになります。多くのフルスタック開発者は、自身のアプリケーションでデータベース コードを記述するために ORM ツールに頼っていますが、その場合 SQL ステートメントは ORM ライブラリによって生成されるため、アプリケーション開発者にとって、どのアプリケーション コードがスロークエリにつながっているかを把握することがより難しくなる可能性があります。次の例は、2 行の Django アプリケーション コードが、ORM ライブラリによって 1 つの SQL ステートメントに変換される
この記事は Kyash Advent Calendar 2019 2日目の記事です。 今回はKyashで利用しているPostgreSQLにおいて、スキーマの差分を解消するツールを作った話についてです。 ツールのリポジトリはこちらになります。 github.com このツールは、2つのPostgreSQLインスタンスからpg_dumpすることにより得られたDDL間の差分を検出し、差分を解消するためのDDLを生成することができます。 社内システムで活用できることを最初のゴールとして開発しました。 こんなことができます。 例えば、入力用のDDLをsource.sqlとdesired.sqlとして用意し、 source.sqlの状態からdesired.sqlの状態に変更するためのDDLを生成してみます。 pg_dumpを使うことを想定して最低限の実装をしているので、入力用のDDLがこんな感じになっ
sqldefのリポジトリ github.com これは何か Ridgepoleというツールをご存じでしょうか。 これはRubyのDSLでcreate_tableやadd_index等を書いてスキーマ定義をしておくとそれと実際のスキーマの差異を埋めるために必要なDDLを自動で生成・適用できる便利なツールです。一方、 で言われているように、Ridgepoleを動作させるためにはRubyやActiveRecordといった依存をインストールする必要があり、Railsアプリケーション以外で使う場合には少々面倒なことになります。*1 *2 そこで、Pure Goで書くことでワンバイナリにし、また別言語圏の人でも使いやすいよう、RubyのDSLのかわりに、誰でも知ってるSQLでCREATE TABLEやALTER TABLEを書いて同じことができるようにしたのがsqldefです。 使用例 現時点ではMy
概要 全般 推奨 非推奨 命名規則 通則 表 列 別名、相関名 ストアド・プロシージャ 統一的接尾辞 問合せ文 予約語 空白類 インデント 望ましい形式 Create文 データ型の選択 デフォルト値の指定 制約とキー 非推奨設計 付録 予約語リファレンス SQLスタイルガイド(日本語訳) 日本語訳について 日本語訳は誤訳や原文の最新版に追随していない恐れがあります。誤訳や改善点があれば、GitHubのissueまたはpull requestを使用するか、Twitterでお知らせください。 翻訳: 久利史之 @nkuritw 概要 このガイドラインは利用の他、forkしたり、自分自身のものに改変したりすることができます。ここで大事なのはスタイルを選択しそれを踏襲することです。変更の提案やバグの修正にはGitHubのissueまたはpull requestを使用してください。 このガイドライン
今日はCSV/TSVなどのテキストファイルをSQLで操作できるツール「q」の紹介です。 使いどころ データ処理を実施する時にはDBに保存されているデータやテキストファイルなどをCSVやTSV等の一定のフォーマットに変換して処理することが多いと思います。そのデータ内容を確認するときには、例えばExcel等に貼り付けることもあると思います。ただ、Excelではデータ量が数百万件規模になってくるとソフトウェアの制約上、処理が行えません。 データベースに保存されている大量のデータを処理・取得する際によく用いられるのはSQLです。SQLはデータ操作のための非常によくできたインターフェースであり、かなりの数のエンジニアが利用できるのではないでしょうか。 単純なCSVファイルに対してもSQLを利用して検索が実施できれば楽だと思って探していたところ、「q」にたどり着きました。 インストール qには様々なイ
このエントリーは、ゆかむアドベントカレンダー - ゆかむ | Doorkeeperの7日目エントリーです。 はじめまして。@setoazusa です。こんなハンドルですが、男性です。 都内のSIerで、TDDの導入や、DevOpsの推進、プロジェクトメンバーのフォローなどを仕事にしています。 IT技術者のコミュニティでは、TDDBCなどのコミュニティなどを中心に活動しています。よろしくお願いします。 ゆかむさんとは、第2回 ゆかむ勉強会 - connpassで、「CIサーバーとSchemaSpyでデータベースのドキュメント作成を自動化」というお題で話をさせていただきました。 CIサーバーとSchemaSpyでデータベースのドキュメント作成を自動化 from Hiroyuki Ohnaka 今日は、その話の続きで、データベースのスキーマ管理のために、ツール同士をどう連携させているかという話を
pgFormatterはPostgreSQLをはじめとするSQLを整形するソフトウェアです。 SQLは文法さえ覚えてしまえば誰でも使えるようになる反面、書き方が冗長的でものすごく複雑な形になってしまうことが多々あります。そこで使ってみたいのがpgFormatter、SQL整形ツールです。 元のSQLです。 こんな感じに整形されます。 デモです。こんな複雑なSQLも… すっきり見やすく! インデントが深くても見やすいです。 pgFormatterはその名の通り、PostgreSQLのシンタックスハイライトに対応しています。SQLとしてはSQL-92/99/2003/2008/2011のキーワードに対応しています。キーワードや関数の大文字化(または逆に小文字化)も指定できます。 pgFormatterはPerl製、PostgreSQL Licenceのオープンソース・ソフトウェアです。 MOO
はじめに 前回は重複値抽出に焦点を当て、名寄せ処理は「不要なレコードを削除」という単純な方法を紹介しました。今回は名寄せ処理に重点を置き、「各レコードに泣き別れしたフィールド値を統合」する方法を紹介し、ASP.NETでの実装例を紹介します。 対応可能なRDB MySQL(4.1以上)、SQL Server、Access、PostgreSQL、OracleなどのRDBで可能です。ただし、EXISTS演算子とサブクエリー(第1回参照)が利用できないSQLiteでは不可です。 必要となる前提知識と環境 前半部分はSQL命令の解説になるので、SQLの基礎知識が前提となります。 後半部分は各回を通して、ASP.NET開発の基礎知識(SQL Serverへのアクセス方法、MultiViewコントロールの使い方を含む)、および以下の環境が前提となります。 開発ツール:Visual Web Develop
はじめに こんにちは。プラットフォーム開発部のsp1rytusと申します。 先日、私もついに30歳のおっさんになってしまいました。加齢臭が出ないようにがんばります! ランキングって? ランキングは誰でもわかる、何らかの得点をソートして順位位置を決定する凄く簡単でシンプルなものです。しかし、ゲームを扱うコンテンツ・サービスにおいては、得点を通算/日別に順位付けされたものが直ぐに目に入るように、他人と自分を比較する非常に重要な役割を果たしています。そこで、この記事では次の3つ要件を満たすようなランキング・システムの難しさと、それを解決するための一例を簡単に説明させて頂きます。 順位付けはリアルタイムに行い、集計時間を必要としない。 100万件以上の得点データが扱える。 すべてのデータが正しい順位付けで取得できる(線形補完などで順位を概算しない)。 リアルタイムによる正確な順位付けは、データ件数
SQL整形ツール DML BreakerはJavaScript製のオープンソース・ソフトウェア。O/Rマッピングソフトウェアは数多く登場しているが、より細かな最適化を求めたり、旧来のシステムではまだまだSQLを使わざるを得ない場面が多い。またログに吐き出されたSQLをチェックしたりする必要がある場面は多々ある。 WHEREでつないだ版 そんな時に出力されたSQLを手作業でフィールド単位に分けたり、テーブル名を並べたりするのは手間のかかる作業だ。そこで使ってみたいのがSQL整形ツール DML Breakerになる。このソフトウェアは貼付けたSQLを解析して読みやすいSQLに変換してくれるのだ。 CRUD(SELECT/INSERT/UPDATE/DELETE)のSQLに対応しており、適切な改行やインデントを挿入してくれる。Webブラウザ上で動作するので社内に一つであれば皆で使えて便利だろう。
第6回SQL流行間比較(2) 直近、直近の1つ前、そのまた1つ前… ミック 2009-05-19
連番の生成~どうしてもループが嫌と言うならしかたない~ これまで、あらかじめ複数行を保持するテーブルを対象に連番を割り当てていました。今度は動的に連番を生成する方法を考えます。 ループを使わずに1行のデータをn行に増やす 表7のような1行だけデータを持つテーブルがあります。データの中身は重要ではないので気にしないでください。 表7 OneRow みなさんに考えてほしいのは、この1行のデータを3行に増やしてもらうことです。しかもその際、図6のように連番を付与します。 図6 連番列「seq」が追加されている seq col1 col2 col3 --- ---- ---- ---- 1 test data col 2 test data col 3 test data col ここで条件が1つあります。それは、3行に限らずn行に簡単に一般化できる方法であることです。もしこの問題を手続き型言語で
yukiです。ダイエットを始めて3kg減ったと思ったら、風邪を引いて見事に1kg増量。 運動しないと駄目ですね。あと残り20kg、道のりは遠いです。 さて今回は、「RDBで階層構造を扱うには?」です。 あるサイトを構築中に階層構造をもったカテゴリ構造にすることになり、どのようにDBで扱うか悩みました。 DBはMySQLを採用していたので、この時点でぱっと頭に浮かんだ選択肢は以下のようなものでした。 XML-DBを利用する 親カテゴリレコードのプライマリIDを子カテゴリレコードに持たせる 親を含めた『絶対パス』を名称として扱い、取り出した後にパース ファイルシステムに同様のディレクトリ構造を作り、毎回パースする (1)のXMLDBはオープンソースのeXistやXindice、Yggdrasillなど様々な選択肢がありましたが、カテゴリのみの利用な割にメンテナンスコストが高すぎるので見送りま
■ ファイルが見つかりません。 Not Found 誤ったURLを入力された可能性があります。再度ご確認のうえURLをご入力ください。
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く