サービス終了のお知らせ いつもYahoo! JAPANのサービスをご利用いただき誠にありがとうございます。 お客様がアクセスされたサービスは本日までにサービスを終了いたしました。 今後ともYahoo! JAPANのサービスをご愛顧くださいますよう、よろしくお願いいたします。
軽くぐぐっただけなので間違っているかもしれないが、OracleにはCSV出力の機能なりAPIなりは備わっていない。ただし、SQL*PlusのコマンドであるとかPL/SQLを使うとかでCSV出力は実現出来る。今回のエントリでは、自分が調べられた範囲内でCSV出力の方法を色々試してみようと思う。 試す方法の要約は下記の通り。 PL/SQLでUTL_FILEを使用してCSV出力(ネイティブコンパイル有効) Oracleとは別マシンから、JDBD経由でCSV出力 Oracleとは別マシンから、SQL*PlusでSPOOLを使用してCSV出力 Oracleとは別マシンから、SQL Developerのエクスポート機能を使用してCSV出力 以下では、計測対象のテーブル構成に続き、それぞれの方法のプログラム等を示す。そのあと、実行時間の比較と感想を述べる。 環境 DB CentOS-6.4-x86_64
本記事は JPOUG Advent Calendar 2017 の1日目です。 Oracle Database でテーブルのデータを外部に出力するには Data Pump を使うことが一般的ですが、外部システムとデータ連係する場合には CSV 形式のフォーマットで行うことが多いと思います。そこで 2017 年現在だったら CSV 形式の出力にどのような方法があるのか試したときのメモになります。 環境 今回は Oracle Database 12.1.0.2 のプラガブルデータベース(PDB)の SCOTT スキーマの EMP テーブルをエクスポートする場合を想定します。 スキーマは Database 付属のサンプルスキーマ作成スクリプト(utlsampl.sql)で作成します。 $ export TWO_TASK=localhost/pdb $ sqlplus system '@?/rdb
JDBCのメタデータは、データベース(RDB)の(データでなく)定義自体を扱う。 メタデータを利用して、テーブルの項目一覧だとか属性だとかを取得することが出来る。 DatabaseMetaDataはConnectionから取得できる。 ResultSetMetaDataはResultSetから取得できる。 テーブルの項目一覧 プライマリキー項目 レコード一意識別項目 項目の型の取得 [2009-04-10] PreparedStatementの項目の型 [2009-10-25] 自動採番値の取得 [/2010-07-24] テーブルの項目一覧を取得する例 import java.sql.Connection; import java.sql.DatabaseMetaData; import java.sql.ResultSet; Connection conn = ~; DatabaseM
CSVファイルからOracleのテーブルへデータを流し込むツール。 大量のinsert文を発行するよりは、断然高速。 データであるCSVファイルや固定長ファイルと、ロード方法を指定するコントロールファイルを用意 して実行する。 (CSVファイルからのロードはこのSQL*Loaderが使えるが、CSV出力には標準的な方法は無いらしくて、select文で加工する方法がよく使われるらしい。 このSQL文をいちいち書くのは少々面倒なので、SQL生成用Excelマクロを作ってみました) コントロールファイル CSVファイルの各項目とテーブルの項目との関連付け等を指定する。 (コントロールファイルをテキストエディタで書くのはけっこう面倒なので、コントロールファイル作成用Excelマクロを作ってみました(CSVファイル用、固定長ファイル用)) 例)emp.ctl: OPTIONS(LOAD=100,SK
はじめに SQLが提供する結合演算には、その特徴に応じて内部結合、外部結合、クロス結合などさまざまな名前が与えられています。普通、これらの結合の多くは、異なるテーブルまたはビューを対象として行われます。しかし、SQLは結合が同一のテーブルまたはビューに適用されることを禁止していません。同一のテーブルを対象に行う結合を「自己結合(self join)」と呼びます。自己結合は、使いこなせば非常に便利な技術ですが、動作がイメージしにくいため敬遠されがちです。そこで本稿では、この自己結合の便利さを例題を通して学び、その動作を分かりやすく解説します。 自己結合を理解することは、実務上のテクニックを身につける以外に、もう一つ利点があります。それは、集合指向(set-oriented)というSQLの重要な特徴を理解できることです。オブジェクト指向言語が世界をオブジェクトとして表現するように、SQLは世界
1 JDBCの概要 この章では、Java Database Connectivity(JDBC)のOracle実装の概要を説明します。次の項目が含まれます。 JDBCの概要 Oracle JDBCドライバの概要 アプリケーションおよびアプレット機能の概要 サーバー側の基本 環境およびサポート このリリースの変更点 JDBCの概要 JDBCは、Javaからリレーショナル・データベースに接続するためのインタフェースを提供するJava標準です。JDBC標準はSun社によって定義され、標準のjava.sqlインタフェースを介して実装されます。このため、各プロバイダは独自のJDBCドライバで標準を実装および拡張できます。 JDBCは、X/Open SQLコール・レベル・インタフェース(CLI)に基づき、SQL92エントリ・レベル標準に準拠しています。 Oracle JDBCドライバの概要 Oracl
7 SQL*Loaderコマンドライン・リファレンス この章では、SQL*Loaderを起動するために使用するコマンドライン・パラメータについて説明します。この章の内容は、次のとおりです。 SQL*Loaderの起動 コマンドライン・パラメータ 終了コードによる結果の検査と表示 SQL*Loaderの起動 SQL*Loaderを起動すると、セッションの特性を確立するために特定のパラメータを指定できます。パラメータは任意の順序で入力できます。オプションとして、カンマで区切ることもできます。パラメータに値を指定するか、場合によっては、値を入力しないでデフォルトを指定できます。 次に例を示します。 SQLLDR CONTROL=sample.ctl, LOG=sample.log, BAD=baz.bad, DATA=etc.dat USERID=scott/tiger, ERRORS=999,
PL/SQL(ピーエル・エスキューエル)は、Oracle社が、Oracle Databaseのためにコンピュータのデータベース言語SQLを独自に拡張したプログラミング言語で、Ada言語を参考にして開発された言語である。PL/SQLは1988年にOracle Databaseに対して初めて追加された。 もともと非手続き型言語であるSQLを手続き型言語(Procedural Language)に拡張するところから「PL/SQL」と命名された経緯を持つ。PL/SQLを使用すると、手続き型言語で埋め込みSQLによる処理と同様に、変数の利用やif / for / loopなどの制御構造を記述してビジネスロジック(Business Logic)をデータベース内に実装することができ、問い合わせ結果の行を1件ずつ処理する場合には、カーソルによるFETCHループでの処理を行うことが出来る。数値計算の効率化の
Oracleのテーブルのカラム(列)の一覧を確認するALL_TAB_COLUMNS 全テーブルのカラムの一覧を確認するSQL -- 全テーブルのカラム(列)の一覧を参照 SELECT * FROM ALL_TAB_COLUMNS WHERE OWNER = 'satou'; Oracleはテーブルごとのカラム(列)をSQLで参照できます。テーブルのカラム(列)を一覧で確認するには「ALL_TAB_COLUMNS」を使います。 ここでは全テーブルの一覧が確認できました。 カラムの一覧を確認するSQL 上の例ではテーブル数が多いと一覧で確認するのが大変です。もう少し具体的に使えるSQLに改善したSQLにしてみます。 -- empのカラム(列)の一覧を参照 SELECT TABLE_NAME,COLUMN_NAME,DATA_TYPE,DATA_LENGTH,DATA_PRECISION,DAT
下図のように、「縦持ち」のテーブルを「横持ち」に置き換えることをピボット(pivot)、逆に「横持ち」のテーブルを「縦持ち」に置き換えることをアンピボット(unpivot)と呼びます。これらの変換を行なう方法をまとめました。 標準SQL Presto Hive Pandas (Python) 標準SQL SQL-like なクエリ言語ならどこでも使える書き方です。 Pivot SELECT uid, max(CASE WHEN key = 'c1' THEN value END) AS c1, max(CASE WHEN key = 'c2' THEN value END) AS c2, max(CASE WHEN key = 'c3' THEN value END) AS c3 FROM vtable GROUP BY uid ;
はじめに データベースを読み書きする部分のユニットテストがやりにくいのには、いくつか理由があります。 複数人でテストを同時に実行すると、競合する データベースを使ったテストは、時間が掛かる データベース内のデータが変わると、テストが失敗する 1番目は、各自の開発環境にテスト用のデータベースを用意することで、解決できます。2番目の問題は、データベースにアクセスするコードをロジックから分離して、データベースに実際にアクセスするテストケースを減らすことで、改善できます(ロジックのテストにはモックやダミーを使います)。3番目は、テストのたびにデータベースの内容を初期化することが基本になりますが、そうするとテストに長い時間が掛かるようになってしまいます。 今回は、ビジネスロジックの開発時にモックやダミーを使いやすくするにはどうするか、また、テスト時にデータベースの内容を安定させるにはどうしたらよいか
なぜ、SQLは重たくなるのか?──『SQLパフォーマンス詳解』の翻訳者が教える原因と対策 『SQLパフォーマンス詳解』の翻訳者の松浦隼人さんに、8つの「SQLが重たくなる原因とその対策」を聞きました。システムのボトルネックになるような「問題のあるSQL」を回避するノウハウを学びましょう。 データの操作や定義をする言語「SQL」は、どのような領域を担うエンジニアにとっても必修科目です。しかし、その仕様をきちんと理解し、パフォーマンスに優れたSQLを書ける方はそれほど多くありません。問題のあるSQLを書いてしまい、知らぬ間にそれがシステムのボトルネックになってしまう事態はよく発生します。 では、どうすればそうした事態を回避できるのでしょうか? そのノウハウを学ぶため、今回は『SQLパフォーマンス詳解』の翻訳者であり、自身もエンジニアでもある松浦隼人(まつうら・はやと/@dblmkt)さんに8つ
日本 PostgreSQL ユーザ会 (略称 JPUG)の Web サイトです。 PostgreSQL の日本語訳マニュアル、PostgreSQL ダウンロードへのリンク、各種イベントのお知らせ、ユーザ会各組織の情報を掲載しています。 毎年 カンファレンス を開催しています。 2024年は PostgreSQL Conference Japan 2024 を開催しました。 PostgreSQL に関するご質問・ご相談は、当会のメーリングリストや ワークスペース(の #beginners や #general チャンネル)に投稿ください。 他の PostgreSQL ユーザからのコメントを貰えると思います。 [JPUG メーリングリスト/Slackワークスペース] https://www.postgresql.jp/npo/mailinglist また、姉妹サイトで PostgreSQL の
今月の頭、詳解MySQL 5.7の出版記念第一弾として、MyNA(日本MySQLユーザ会)名義でイベントを行ったので、その際使用したスライドを紹介しておこう。今回紹介した新機能のカテゴリは2つ。レプリケーションとセキュリティである。レプリケーションはMySQLの運用と切っても切り離せないほど重要なものであり、そしてデータベースサーバーにとってセキュリティが重要であることは、言うまでもないだろう。 今回のバージョンでは、レプリケーションが大きく進化している。 まず、MySQL 5.7では、レプリケーションのトポロジの限界を打ち破った!!MySQL 5.6までのバージョンでは、スレーブはひとつのマスターしか持つことができないという制約があったのだが、それがなくなった。すなわち、スレーブが複数のマスターからデータを連続的に複製することができるようになったのである。それにより、これまで以上に様々な
Eureka EngineeringLearn about Eureka’s engineering efforts, product developments and more.
昨日僕の Twitter タイムラインで q というツールが話題に上がっていました。 GitHub - harelba/q: q - Run SQL directly on CSV or TSV files Text as Data q is a command line tool that allows direct execution of SQL-like q... https://github.com/harelba/q 標準入力を SQL で抽出できるという物です。ただ個人的には「こういうの python じゃなくて Go でビルドされてると助かるよなー」と思ったので q と同じ様な動作になるツールを作ってみました。 GitHub - mattn/qq Select stdin with query https://github.com/mattn/qq 例えば msys2 のシ
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く