• ベストアンサー

SQL Server のデータをCSVファイルに保存

SQL Server のデータをCSVファイルにして保存したいのですが、簡単に出来る方法はないでしょうか? よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • jamshid6
  • ベストアンサー率88% (591/669)
回答No.1

お使いのSQL Serverが以下のものである場合、 ・SQL Server 2008(全エディション) ・SQL Server 2005(Express Edition除く) SQL Server Management Studioには、「データのエクスポート」というメニューがあります(データベースを選択して右クリック→タスク→データのエクスポート)。 これでデータ変換元にSQL Serverのテーブル、変換先にフラットファイルを指定し、カンマ区切りで出力するのが一番簡単でしょう。 (全部GUIでできますからね)

yasheeki
質問者

お礼

ありがとうございます。 ただし、私の環境は、SQL Server 2005 Express Edition なのです。 というのも、1つには、Vista のほかの1台が古いXP であること。 もう一つの理由は、SQL Server 2008 Express は、何度かインストールに失敗してPCのリカバリを繰り返しましたので、もう怖くて手が出せないからです。 SQL Server 2005 Express Edition での方法はどんなものでしょうか? お願いします。 でも。データのエクスポート機能はいいですね。無料のExpress にはつけないものだとばかり思っていました。

その他の回答 (4)

回答No.5

Access のリンクテーブルでその DB に接続して、テキスト ファイルにエクスポートしては?

  • jamshid6
  • ベストアンサー率88% (591/669)
回答No.4

私はXMLは基本データベースの延長でしか扱わないので、質問者さんとは傾向は異なると思います。 勉強されたいというのに水を指す気はもちろんありませんが、個人的な意見だと何か積極的な動機がないと身につきにくい内容だとは思います。 XMLマスターという資格がありますが、その「ベーシックV2」の参考書が入門編としてはよくまとまっているので、まずはそれをご覧になってみるといいでしょう。これを読んで「実際に扱ってみたい」という気持ちになるかどうかで判断してみてはどうでしょう。

  • jamshid6
  • ベストアンサー率88% (591/669)
回答No.3

#1,#2です。 ファイル出力する方法はSSISやプログラミングによる方法など、それはいろいろありますけど、 bcpが難しいとおっしゃるならば、他のはもっとお勧めできませんね。 そうなるともう方法はいくつもありません。 ・SSMSでテーブルをSELECTで表示し、結果グリッドの左角を右クリック→結果に名前を付けて保存 ・ExcelでSQL Serverに接続し、テーブルを読み込んでCSVに保存 >XMLデータに変換するのであれば簡単なのでしょうか? テーブルのデータをXMLにするのは簡単ですが、ファイルにする手順は結局同じです。 試しにSSMSで「SELECT * FROM (テーブル) FOR XML PATH」と書いて実行してみてください。 結果は1つだけで、リンクが表示されますので、それをクリックするとXMLが見られます。 これを保存すれば、確かにXMLファイルになります。 ただ、「XMLならもっと楽に(アプリなどから操作を)できるのでしょうか?」という質問を見る限り、 お勧めはできません。XMLを扱ったことがなければ、CSVより楽だと思うことはないでしょう。

yasheeki
質問者

お礼

ご指導ありがとうございます。 「XMLならもっと楽」という訳ではないとのことで、ごもっともと思います。 ただ、CSVでも同じことであれば、今やXMLの方が覚え甲斐があるかと思いました。 すでに書いたように、CSVデータをExcelから開いて活用することはありませんので、どうせならCSVかと。 という訳で、XMLの読み書きを覚えてみようかと思いました。いばらの道でしょうか?C#長年初心者ですけれど。

  • jamshid6
  • ベストアンサー率88% (591/669)
回答No.2

#1です。 1つの方法はSQL Server Management Studio Express 2008(SSMSE)だけをインストールして、今あるSQL Server 2005 Expressに接続し、エクスポートメニューを使うことです。 http://www.microsoft.com/downloads/details.aspx?familyid=08E52AC2-1D62-45F6-9A4A-4B76A8564A2B&displaylang=ja SSMSEは2005/2008は同居できますし、クライアントツールだけなら問題なくインストールできる可能性はあります。 もう一つは「楽に」という定義に当てはまるかは不明ですが、BCPユーティリティを使うことです。 http://msdn.microsoft.com/ja-jp/library/ms162802(SQL.90).aspx コマンドプロンプトを開いて、 BCP testdb.dbo.testtbl out "C:\TEMP\testtbl.csv" -t, -c -Slocalhost\SQLEXPRESS -T のように打って実行します。 (データベース名やテーブル名、ファイル名は実際のものに書き換えてください) SQL Server認証の場合は、こんな感じです。 BCP testdb.dbo.testtbl out "C:\TEMP\testtbl.csv" -t, -c -Slocalhost\SQLEXPRESS -Usa -Ppassword BCPはあまり柔軟な出力はできない点(たとえば先頭にフィールド名を出力できない等)は留意してください。

yasheeki
質問者

お礼

貴重な情報をありがとうございます。 ただ、SQL Server Management Studio Express 2008(SSMSE)だけをインストールして、今あるSQL Server 2005 Expressに接続し、エクスポートメニューを使うことについては、やはり何度も失敗してリカバリを繰り返した恐怖体験があるために、あきらめました。 また、BCPユーティリティを使うことについては、簡単ではなさそうです。 ちなみに、XMLデータに変換するのであれば簡単なのでしょうか?(簡単の意味はいろいろあるとは思いますが)どうせCSVでも、CSVそのもののデータ表示を見たいのではなくて、データとしてテキストファイルに保存またはデータ取得をしたいだけですので。 で、XMLならもっと楽に(アプリなどから操作を)できるのでしょうか?(この意味もいろいろありますが)。 簡単に言えば、テキストファイルにデータとして保存したいだけなのですが、その方法が(多分)いろいろありそうで、どれを選択したらよいかわからないのです。

関連するQ&A

  • SQL ServerにCSVをインポート

    SQL Server Express 2012にCSVファイルのデータをインポートさせたいと思っています。 SQL Server のデータのうち、主キーはdate型、その他はbit型、nvarchar型です。 SQL Serverのテーブルのデータには、#2013-01-01#, #False#, "あいう"などというデータがあります。 CSVは、Event.csvというデータです。 インポートするにあたって、BULK INSERTを利用しようとしています。 上記のデータで下記のコードをSQL Server Managemant Studio Expressで実行するとエラーとなります。 FROM 'D:\Business\Data\Event.csv' WITH ( FIELDTERMINATOR = ',', ROWTERMINATOR = '\n' ); データを別の文字列にするべきなのか、#で日付やブール値を囲わない方がよいのか、あるいはカラム名の入ったCSVを用意するべきなのかなど、疑問が多いのですが、実際はどうあるべきなのでしょうか。 なお、上記のデータはもともとExcel のデータをVBAを使ってCSVファイルに出力したものなので、CSVの形式を別の状態のデータに変換することはできます。 もともとの目的は、ExcelのデータをSQL Serverのデータにインポートしたいだけです。 よろしくお願い致します。

  • OracleからSQL Server 7.0へのデータの渡し方

    Oracle 8.1.6から SQL Server 7.0にデータを渡したいのですが、 CSVファイルを利用したファイル転送以外の方法ってどんな方法が あるんですか? 環境 Oracle 8.1.6(Trubo Linux Server 6.0) SQL Server 7.0(Windows 2000 Server) ・ネットワーク的には、同一LANの中に存在します。  よろしくお願いいたします。

  • SQLを流して自動でファイルを作る方法

    こんにちは。SQL Server2003を使っています。 といっても、私はselect文を使ってデータを引っ張ってくるくらいしか使えません。 毎回同じSQL文を流して結果をCSVで保存しています。 そこで、自動でSQL文を流してCSVファイルを特定のフォルダに保存するといったことができないかと思っています。 どのような技術を使って、そのような事をすればよいのでしょうか?よろしくお願いします。

  • aspファイルにcsvインポートのSQLを書きたい

    お世話になります。 当方サーバー管理初心者です。 社内イントラ内に古いaspファイルで構成されたイントラサイトがあります。 そのイントラサイト内のあるaspファイルの中に、ボタンがあり、ボタンをクリックしてインポートしたいCSVを指定し、 登録ボタンを押してCSVをインポートすると、社内にあるSQLサーバーにアクセスし、データを追加したいテーブルに CSV内のデータを追加したいのですが、その際のaspファイル内に記載する SQLコマンドはどのようになるのでしょうか? Insert Into データを追加したいテーブル名 Values ( 以降に何を入れたら良いかわかりません。 不足な情報があれば加筆修正いたします。 どうぞよろしくお願いいたします。

  • CSVファイル 保存 データ化け

    CSVファイルで次のデータを保存するとデータ化け(文字化け)してしまいます。 入力データのまま保存するにはどのようにすればよいのでしょうか? 例)15-01-02  → 2015/1/2 15-01-02のままでcsvファイル保存したいです。 次にファイルを開くと右のデータになってしまいます。 以上、宜しく御願い致します。

  • SQL Server へのデータ追加について

    現在a、b、cの店舗でそれぞれAccessをDBとして活用しているのですが、それとは別に 3店舗分のデータを一つにまとめた統合用DBとしてSQL Serverを利用したいと考えています。その際、それぞれ各店舗分のデータをSQL Serverへと追加していきたいのですが、どういった処理が最適で効率が良いのか分からず困っています。 希望する処理的には何らかのexeファイルを作成し、そのexeファイルを叩くとAccessからデータを吸い上げ、SQL Serverへとデータを追加するということを行いたいです。 私が考えられる処理としては以下の2点でした。 1、Accessから吸い上げたデータをストアドを使い、データを追加していく。 2、Accessから吸い上げたデータをCSVに変換し外部ファイルとし、ローダーを使用して   データを追加する。 それぞれの店舗データが3万件程あります。 なるべくDBに負担をかけないで以上の様な事を行いたいです。 DBまわりにお詳しい方、ご教授よろしくお願い致します。

  • [SQL Server] コマンドプロンプトからのCSV形式出力

    SQL ServerのテーブルデータをSELECTしてダブルコーテ区切りのCSVに出力したいと考えております。 ・batファイルからの起動を希望。 ・出力CSVファイル名はbatファイルより引数で指定したい。 ・出力後、DELETEも行いたい。 OracleだとSQL*Plus環境で下記のようにテキストレベルで簡単にできます。 SQL Serverでも同様のことができないでしょうか? 要は下記をSQL Server版でやりたいということです。 参考:Oracleだと・・・ 同一dirに、abc.batとabc.sqlを用意しabc.batを実行すると20070601.csvが生成される。 1.abc.bat rem ----abc.bat-ここから---- sqlplus usr/pwd@host @abc.sql 20070601.csv rem ----abc.bat-ここまで---- 2.abc.sql ----ファイル名=abc.sql-ここから--- set echo off set heading off SET VERIFY OFF set FEEDBACK OFF set TRIMSPOOL on set termout off set pagesize 0 set linesize 32767 spool &1 select '"'|| カラム1 ||'",'|| '"'|| カラム2 ||'",'|| '"'|| カラム3 ||'"' from テーブル1; spool off delete from テーブル1; exit ----ファイル名=abc.sql-ここまで--- 20070601.csv結果 -ファイル名=20070601.csv-ここから--- "20060726","scott","356160" "20060727","tiger","463391" "20060728","manager","1930" -ファイル名=20070601.csv-ここまで--- DBサーバ環境 OS:Win2003SvrR2 SQL Serverバージョン:わかりません。(2003にのってるので最近のだと思われます) Oracle経験者でSQLServer初心者です。マニュアルもなく、Web検索しても「SQL」「Server」ってなかなかうまくひっかからない!! ので質問あげさせていただきます。

  • CSVファイルのデータ型について

    初めて質問します。よろしくお願いします。 拡張子「.xls」のファイルを「.csv」に変えるときに、データの形が変わってしまいます。 (エクセルでは「001」(文字列)のものが、CSVで保存すると「1」(数値)となってしまう) これを解決するために エクセルから文字列のデータを持ってきて貼り付け・保存しようとしましたが、 何度やってもデータは数値になってしまいます。 データ量が多いので、手ではとても直せません。。。 どなたか、よい方法がありましたらご教授ください。

  • SQL Server 2005について

    超のつく初心者です。 SQL Server 2005をデータベースとして、ソフトを作ろうかと思っています。 2点質問です。 1.SQL Server 初挑戦なので考え方が間違っていたら ご指摘ください。 フォームに入力→SQL Server に保存。 SQL Server →データをフォームに呼び出して編集→SQL Server に保存。 保存ファイルの代わりのような役割になるのでしょうか? 2.SQL Server 2005をデータベースとして作ったアプリケーションは、 ユーザーのパソコンがWindowsシリーズでしたら問題なく動作するのでしょうか?開発用ソフトはVisual Basic2005です。 作ったはいいがユーザーのパソコンが最新でないとだめ、というのでは元も子もないなぁと思ったので聞いてみました。 以上2点よろしくお願いします。

  • SQL ServerのテーブルをCSVへ出力したい

    お世話になっております。 httpで、インターネット経由にて SQL Serverのテーブルから条件に合致したデータをCSVへ出力しダウンロードする 仕組みを作りたいと考えております。 例 ■テーブルA KeyA 項目1 項目2 001 100 200 002 200 250 003 300 350 select * from KeyA =para paraはパラメタとして渡し、結果をpara.CSVのようにCSVファイルへ出力したいのです。 sqlcmdを使えば、できそうな感じだったのですがよくわからなかったのが (1)sqlcmdのSQL文にパラメタを渡すことができるのか、できるのならどうやるのか (2)出力ファイル名もパラメタ化したいのだができるのか、できるのならどうやるのか (3)ネット経由でsqlcmdを実行することができるのか、できるのならどうやるのか (環境) SQLServer2008R2 IIS ご教授頂けましたら大変ありがたいです。 よろしくお願いいたします。