• ベストアンサー

BCPコマンドについて

SQLServer2000上でテーブルを作成して、csvファイルをbcpコマンドを使用してインポートしようとしているのですがうまく実行出来ません。 エラーは 「'-'(ハイフン)の近くに無効な構文があります」 と表示されます。 おそらくデータベース名に-(ハイフン)が入っているため なにか工夫が必要だと思うのですがそれが分かりません。 ちなみに、 データベース名 : aaa-01 テーブル名 : bbb_table CSVファイル : c:\ccc.csv ユーザ : sa パスワード : dddd とすると、 「bcp aaa-01..bbb_table in c:\ccc.csv -E -c -t, -U sa -P dddd」 という感じです。 どこかまずいところがあるのでしょうか? どうかご教授お願いします。

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

  • ベストアンサー
回答No.2

手順1  ハイフンを含まないDBを作成(仮にaaaとする) 手順2  ビューを作成する CREATE VIEW dbo.VIEW1 AS SELECT * FROM [aaa-01].dbo.bbb_table 手順3  ビューにBCPINを行う >bcp aaa-01..bbb_table in c:\ccc.csv -E -c -t, -U sa -P dddd bcp aaa..VIEW1 in c:\ccc.csv -E -c -t, -U sa -P dddd この方法は、カラムにスペースが存在した場合などにもビューを利用することで、BCPINを行うことができます。 っていうか、ハイフンやスペースを含むのってあまりよくないですね^^;; アンダースコアへの変更が可能であれば、DB構成の変更をお勧めいたします。

teru_bozu_bozu
質問者

お礼

なるほど、よく分かりました。 まだ開発に入ったばかりなのでご指摘の通り、 ハイフンを辞めようと思います^^; ありがとうございました。

その他の回答 (1)

  • 7marine
  • ベストアンサー率36% (59/160)
回答No.1

bcp [aaa-01]..bbb_table in c:\ccc.csv -E -c -t, -U sa -P dddd カッコで括ってもだめでしょうか? 未検証なので全く自信なしです

teru_bozu_bozu
質問者

お礼

早速のご回答ありがとうございます。 []でくくれば良いのですね。 ありがとうございます。勉強になりました<(_ _)>

関連するQ&A

  • CSV形式のファイルを読み込んでテーブルに格納するには?(BULK INSERT、BCP、DTS)

    VisualBasicのカテゴリでも質問したのですが、 こちらの方が回答がつく可能性が高いのではと思い、こちらにも書き込みました。 今、 "aaa","bbb","ccc"  のような形で1レコードのCSVファイルがあります。 これをSQLServer2000上のテーブルに読込みたいのですが、 10件ほどの少ないレコードなら 各フィールドごとを変数に入れて読込み、 それをループさせてINSERT INTO すればよいのですが・・・。 大量の件数の場合時間がかかりすぎてしまいます。 それで、BULK INSERT、BCP、DTS などの利用を考えているのですが、 まず、何よりこの質問です。 (1)このようなファイル形式のものを上記の方法で読込めるのか? 実現可能なのかをまずお聞きしたいです。 どなたか、成功されている方はいらっしゃいますか? (2)BCPでファイルのフォーマットを指定したファイルを用意して試みたところ、 ""で区切られているため、その部分もフィールドに取り込まれてしまい、 binaryデータが切り詰められましたとなってしまいます。 この回避方法はないでしょうか? (3)""が余計なので、これを変換して読込むことは可能ですか? DTSはVisualBasic上からコマンドとして利用したいです。 batファイルを用意してもいいです。 困っています。どなたか助けてください。

  • BCPコマンドのcmdファイルを複数行う・・・

    お世話になります。 只今、以下の環境でシステム構築を行っています。 OS:Windows2003Server DB:SQLServer2000(SP4) そこでBCPコマンドを使用して複数のテーブルのデータを出力する為にテーブル分のBCPコマンドを記述したcmdファイルを用意して実行してみた所・・・ C:\>bcp * out *.dat -S * -U * -P * -c -t * -r * C:\>bcp * out *.dat -S * -U * -P * -c -t * -r * C:\>bcp * out *.dat -S * -U * -P * -c -t * -r *   ・   ・   ・ ※「*」はテーブル名、サーバー名など ・・・と一行目のコマンドが繰り返し表示され実行されてずに無限に繰り返す状態に陥ってしまいました。 cmdファイルを使用せずに1テーブルのbcpコマンドだけを実行すると正常に終了します。 また1度上記の現象に陥ってしまうと今まで動いていたcmd(複数bcpコマンドが記述)を実行しているのにも関わらず失敗したcmdのbcpコマンドが繰り返し表示される状態になってしまいました。 自PCもDBも再起動しましたが直りませんでした。 原因が不明なので非常に困っています。 なんらかの解決方法や情報を頂ければ幸いです。 よろしくお願い致します。

  • 分岐SQLを一発のSQLで実現したい

    【データベース:SQLServer2005】 SQLのアドバイスを頂きたいです。 【テーブル】 テーブル名:Table1 フィールド名:種類、キー1、キー2 テーブル名:Table2 フィールド名:種類、キー1、キー2 テーブル名:Table3 フィールド名:種類、キー1、キー2 【データ】 Table1 種類、キー1、キー2 001  AAA  BBB 001  AAA  CCC 001  AAA  DDD Table2 種類、キー1、キー2 002  AAA  BBB 002  AAA  CCC NULL  AAA  DDD Table3 種類、キー1、キー2 NULL  AAA  BBB NULL  AAA  CCC NULL  AAA  DDD これをUNIONで取得します。 種類、キー1、キー2 001  AAA  BBB 001  AAA  CCC 001  AAA  DDD 002  AAA  BBB 002  AAA  CCC NULL  AAA  DDD NULL  AAA  BBB NULL  AAA  CCC 実現したいのは、 1)同種類、キー1、キー2のデータで、 種類にNULLが含まれていたら、NULLのデータは取得しない 2)同種類、キー1、キー2のデータで、 種類にNULLしかないデータは、取得する 001  AAA  BBB 001  AAA  CCC 001  AAA  DDD 002  AAA  BBB 002  AAA  CCC NULL  AAA  DDD →いる NULL  AAA  BBB →いらない NULL  AAA  CCC →いらない ↓結果 001  AAA  CCC 001  AAA  DDD 002  AAA  BBB 002  AAA  CCC NULL  AAA  DDD 上記を実現する為、UNION後のSQLでも構わないので、 一発のSQLで取得する事は可能でしょうか? 有識者の方にご享受頂ければ幸いです。 どうぞ宜しくお願い申し上げます。

  • 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使わない方法があれば、それでもいいのですが。。。。。

  • 複数行になっている文字列を検索したい

    PERL初心者です。 以下、テキストに複数行になっている箇所の2行目の「BBB」を検索キーとして 3行目の「CCC」を取得したいのと2行目、3行目を1レコードにしたいのですが できません。 test.txt ---------------------------------- 1. AAA BBB CCC DDDD 2. AAA BBB 3. CCC DDDD 4. AAA BBB CCC DDDD ----------------------------------- 以上よろしくお願いします。

  • CSVファイルをAccessに取りこみたい

    以下のような2つのCSVファイルがあるとします。 【hoge1.csv】 aaa,bbb,ccc,ddd 1,2,3,4 【hoge2.csv】 aaa,bbb,ddd,eee,fff 1,2,4,5,6 Accessをあまり使用したことがないので教えていただきたいのですが、 hoge1.csv、hoge2.csvを、以下のような形で Accessの1つのテーブルにインポートする事はできるのでしょうか? ---------------------------- | aaa | bbb | ccc | ddd | eee | fff | | 1 | 2 | 3 | 4 |  |  | | 1 | 2 |  | 4 | 5 | 6 | ---------------------------- ※「aaa」「bbb」…をフィールド名としたいです vb等でプログラムを自作するしかないのでしょうか? 何か良い方法がありましたら教えてください。お願いします。

  • CSVファイルの指定部分をエクセルに取り込みたい

    複数のCSVファイルをエクセルに、VBAを使用して取り込みます。 CSVファイルの形式は決まっているのですが、キーワード行から指定行分のみを取り込みたいです。 データ形式は、 A1 aaa bbb ccc B1 aaa bbb ccc C1 aaa bbb ccc A1 a1a b1b c1c  :  : という感じで、キーワードA1行以下から次のキーワードより上のデータをエクセルに取り込みたいです。 どうぞよろしくお願いいたします。

  • CSVに外部テキストファイルを列として追加する方法

    こんにちは。 CSVファイル(base.csv)の先頭列に、別のテキストファイル(add.txt)の中身を新規の列として挿入したいと考えているのですが、よい方法がわかりません。。。 どうのような方法を使えば対応することができるでしょうか? どうぞよろしくお願いいたします。 ■CSVファイル(master.csv) title,developer_name,seller_name,primary_genre_name,application_url AAA,BBB,CCC,DDD,EEE AAA,BBB,CCC,DDD,EEE AAA,BBB,CCC,DDD,EEE AAA,BBB,CCC,DDD,EEE ■テキストファイル(add.txt) id 000 111 222 333 ↓ ■目標としたファイル(master.csv) id,title,developer_name,seller_name,primary_genre_name,application_url 000,AAA,BBB,CCC,DDD,EEE 111,AAA,BBB,CCC,DDD,EEE 222,AAA,BBB,CCC,DDD,EEE 333,AAA,BBB,CCC,DDD,EEE

  • テーブル内の一括コピーについて

    SQLServer で テーブルAが下記のようにあり ID name subname 25 AAA NULL 28 BBB NULL 31 CCC NULL subnameの欄にIDの値と全く同じものをいれたいのですが どのようにしたらできるでしょうか? ID name subname 25 AAA 25 28 BBB 28 31 CCC 31 ↑結果的にはこうなってほしいのですが よろしくお願いします。

  • コマンドで

    aaaフォルダの中にbbbフォルダとbbb.txtがあり、その中身すべてを cccフォルダに移動させたいのですが・・・・ move \aaa\* ccc だとbbb.txtだけが移動してしまいます。 フォルダもファイルもすべてaaaに移したい場合はどうすれば いいのでしょうか。宜しくお願いします。