• ベストアンサー

ファイルデータをテーブルの取り込みたいです

SQL Serverの初心者です。 ファイルデータをbcpコマンドを使用して取り込めたのですが、 もう一度同じファイルを取り込もうとした時に、重複エラーで怒られてしまいました。 db2のimportコマンドの様な、insert_updateのような動きをしたいのですが。。。 何か良い方法があれば教えてください。

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

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

SQL ServerがMERGEコマンドに対応したのは2008からですから、bcpが対応してくれるとしてももっと先の話でしょうね。 ということで、bcp実行前にsqlcmdなどを使ってTRUNCATEかDELETEを実行してから取り込みなおすのが一番簡単です。 どうしても差分更新を掛けたいならば、一旦ワークに入れて更新する形になります。

kumazoro
質問者

お礼

MERGEコマンドでうまくいきました。 ありがとうございます。

すると、全ての回答が全文表示されます。

関連するQ&A

  • SQL Serverでのデータロードについて質問

    SQL Server初心者です。 CSVファイルのデータをテーブルにロードするにあたり、以下のような事をするにはどんな方法があるのでしょうか?  ケース1:CSVファイルのデータでテーブルを上書き  ケース2:主キーが一致するレコードがテーブル内に存在する       データはUPDATE,なければINSERT ケース1,2それぞれDB2でいうところのImportコマンドを使用した時のREPLACEモード及びINSERT_UPDATEモードのイメージです。 DB2のように簡単にはいかないものでしょうか。 よろしくお願いします。

  • テーブルのエクスポート・インポート

    SQL Server2005 を使用しています。 テーブルのインポート・エクスポートに関して質問があります。 今まで、Oracleを主に使用していて、「EXP」「IMP」コマンドを使用して DMPファイルを介して別PCのデータベース間でテーブルのやり取りをしていました。(DB上のテーブルすべてや特定のテーブルのみなど) 同様のことをSQL Serverで実現したく下記を試したのですが上手くいきません。 1.Management Studio で「タスク」→「データのインポート(エクスポート)」   フラットファイル、Excel、MDBファイルなど試したのですが、   これらの中間ファイルを介した際にデータ型が変わってしまい   元の型のまま戻せない。   Oracleの「DMP」ファイルのようなものには落とせないのでしょうか? 2.「bcp」コマンド   これに関しては、複雑でよくわかりませんでした。   もし、このコマンドで実現可能であれば、やり方を教えて下さると   助かります。 以上、ながなが書きましたが宜しくお願い致します。

  • 2つのテーブルへのデータの追加方法

    初歩的な質問なのですが、わけがわからなくきてなってしまいました。 あるショッピングASPから、以下のようなトランザクションデータが CSVでダウンロードできます。   山田太郎,example@example,○○セット,2980,…,他、住所・TELなど トランザクションテーブルと顧客マスターテーブルをもつデータベースがあるとします。 そして、上記の山田太郎さんは、一度、買い物をしたことがあり、 顧客マスターテーブルには、山田さんのデータが入っているものとします。 このようなデータベースにデータを格納したい場合、 どのような方法があるのでしょうか? SQL文のINSERT、IMPORTコマンドなどいろいろ方法はあると思いますが、 住所変更がない場合と、あった場合(UPDATEが必要な場合)とで、 どのようにすればよいか、それぞれ教えていただけると大変幸いです。 ちなみに、DBはMySQLを使っていますが、 概念がわかれば、他DBのSQL文など多少の方言があってもかまいません。 どうかよろしくお願いいたします。

  • bcpインサートでのフォーマットファイルの書き方

    bcpコマンドでインサートをしたいと考えています。 テーブルの形式は 1 datetime 日時 2 filed_1 varchar(10) 3 filed_2 varchar(10) 4 filed_3 varchar(10) です。 フォーマットファイルに 8.0 4 1 SQLDATETIME 0 8 "," 1 日時 "" 2 SQLCHAR 0 3 "," 2 filed_1 "" 3 SQLCHAR 0 3 "," 3 filed_2 "" 4 SQLCHAR 0 3 "\r\n" 4 filed_3 "" 書きました。 データは、 2009/04/01 0:00:00,11.0,11.0,11.0 2009/04/01 0:01:00,11.0,11.0,11.0 です。 SQLServerは2005のExpressです。 実行すると コピーを開始中です... SQLState = 37000, NativeError = 7339 Error = [Microsoft][ODBC SQL Server Driver][SQL Server]リンク サーバー '(null)' の OLE DB プロバイダ 'STREAM' から、列 '[!BulkInsert].日時' に無効なデータが返さ れました。 BCP コピー in が失敗しました が返されます。 成功させるにはどこを直せばよいでしょうか。 よろしくお願いします。

  • bcpによる、テーブル→CSVファイル出力について

    bcpによる、テーブル→CSVファイル出力について SQL Server(2003)のクエリアナライザからテーブル->ファイル出力を試みたのですが、うまくいきません。 サーバからの実行ではなく、クライアントのEnterpriseManagerのクエリ実行です。 このエラーは、サーバ接続自体がうまくいってないということでしょうか? exec master.dbo.xp_cmdshell 'bcp xxxxx.dbo.コピー元テーブル名 out C:\AAA.csv -c -S サーバ名 -U 接続ID名 -P 接続パスワード' 実行結果 SQL Status=S1000 ,NativeError=0 Error=[Microsoft][ODBC SQL Server Driver]一括コピーホストのデータファイルが開けません。 csv->テーブルについては、BULK INSERTで問題無く取り込めているので、単純に逆を行いたいだけです。 bcp使わない方法があれば、それでもいいのですが。。。。。

  • ASPからBCPの実行で「ローカル セキュリティ機関にアクセスできません」

    ASP(VBScript)にて動作するWeb機能にて 1.Web画面からボタン押すと 2.ASPがBCPコマンドを発行してファイルを作成 という処理を行いたいのですが BCPを実行するところで 「SSLローカル セキュリティ機関にアクセスできません」 というエラーが発生してファイルが作成されません BCPコマンドは Set Wsh = CreateObject("WScript.Shell") bcpCmd = "bcp ~~~~ -U sa -P *** -S DBサーバ" Set oExe = Wsh.Exec(bcpCmd) こんな感じです ファイル出力先のフォルダにはIUSRに対して許可しています BCPコマンドはコマンドプロンプトからじかに実行するとファイルが作成されます WEBサーバ: OS Windows Server 2003 R2 IIS 6.0 DBサーバ: OS Windows Server 2008 DB SQL Server 2008

  • (SQLSERVER) 別サーバーへテーブルコピー

    標題の別サーバーのDBへテーブルをコピー(更新)したいと考えておりますが、やり方が全く分かりませんのでお教えください。 【更新元】 販売管理サーバー OS:Windwos2008R2 SQL SERVER 2008R2 サーバー名:POS DB名:POSDATA テーブル名:POS売上伝票 【更新先】 社内開発用サーバー OS:Windwos2008R2 SQL SERVER 2012Express サーバー名:AD DB名:POS テーブル名:POS売上伝票 POS上のSQL ManagementStudeoから、AD上のSQLSERVERへのアクセスは可能な状態にしております。 ◎実装したい要件 POSサーバー上のデータを、毎日定時にADサーバー上のDBに追加更新 ※理想としては、バッチ等のスクリプトをタスクに登録し定時に実行 自分なりに調べてみたのですが、データを丸ごとコピーする場合は、"bcp"コマンドを実行すれば可能なようですが、bcpコマンドで、サーバー間のコピーの方法が良くわかりませんでした。 また、出来れば日々更新する為、データが変更されたレコードはUPDATE追加されたデータは、INSERTする事が理想です。 ※夜間のバッチ処理ですので、上記の方法が私の知識的に難しようであれば、テーブルを作り直ししてもよいと考えております。 効率的な方法をご存じの方がいらっしゃいましたらアドバイスをお願いいたします。

  • SQLSERVER データインポート

    SQLSERVER2008で別のデータベース1からbcpコマンドでバックアップしたdatファイルがあります。それを別のサーバーのデータベース2に インポートしたいのですが、データベース2もSQLSERVER2008です。 (データベース2にはインポートするテーブルは作成済です。) bcpコマンドでインポートしようとすると、サーバーが見つからないかインスタンスエラーになってしまいできません。 そこでツールでインポートしようとしたのですが、 データソースをテキストでdatファイルのあるパスを指定して やったのですがこれも入りません。 どうすればインポートできますでしょうか? データベース2の方はwindows認証です。コマンドでcdで datファイル(table1.dat)がある階層まで下げてからこう入力しました。複写元 table1.dat→複写先 DB TESTのtable1へ bcp TEST.dbo.table1 in table1.dat -T -C -t bcp,ツールどっちでもいいのでインポートの方法を教えてください。

  • PostgresSQLのテーブルを他のサーバにコピーしたい!

    すいませーん!教えてください! Linux8.0でPostgresSQLを使っています。 サーバ内にあるDBのテーブルを、他のサーバにコピー、もしくは丸ごと転送するやりかったってありますか? あったら教えてください。 こちら、linuxは初心者。SQLも一般的なコマンドしか知らないので、出来れば詳しい手順とコマンドを教えていただければ助かります。 テーブルをtxtファイルにして…とか聞いたんですが。よくわからないのです。

  • 1つのテーブル内のデータで重複する結果は表示しない

    日付の範囲を2003/10/01 から 2003/10/02 としてコードが重複する場合は1番 新しい日付を抽出す方法はないでしょうか CODE 日付 0001 2003/10/01 0002 2003/10/01 0001 2003/10/02 0001 2003/10/03 0003 2003/10/01 0004 2003/10/10 0005 2003/10/01 のようなデータがあり、検索した結果を CODE 日付 0001 2003/10/03 0002 2003/10/01 0003 2003/10/01 0005 2003/10/01 となるような式はできないでしょうか 使っているdbはSQL Server 6.5 です。  ご享受のほど、お願いします。

このQ&Aのポイント
  • TM887とTM886は海外のPOSシステムで動作検証中、日本語文字表示に問題あり
  • 仕様変更により日本語文字が「?」で表示され印刷ができない
  • 他の言語表示には問題なく、プリンターの設定で解決可能か確認したい
回答を見る