2012-03-06 18 views
0

次のコマンドを実行して、テキストファイルの大量の販売データをデータベースにインポートしようとしています。私は次のことを実行すると、私はエラーを取得:「無効なオブジェクト名 『PetDatabase.Sales』無効なオブジェクト名 'PetDatabase.Sales'

BULK INSERT PetDatabase.Sales 
FROM 'C:\Temp\P1.txt' 
WITH 
(
    FORMATFILE = 'C:\Temp\PetSales.Fmt' 
); 

を誰もが私の問題を引き起こしていただきました!私は、フォルダ内のテーブルを持っている見ることができます。私はPetsDatabaseを試してみましたが、とき?。 。それは何の違いを作ったんTables.Sales

+0

Umは、SQL Serverコマンドの 'BULK INSERT'ではありませんか? –

+0

MS SQLのように見えます。 – Teja

+0

@JoachimIsakssonはい。 'BULK INSERT'はT-SQLステートメントであり、MySQLでもっとも同等のものは' LOAD DATA INFILE'です。 –

答えて

2

この回答を無視質問がmysqlでタグ付けされたとき、それが書かれたコメントを保つために、ここで答えを残し

- 。。。

を使用してみてください代わりに210。

http://dev.mysql.com/doc/refman/5.1/en/load-data.html

+0

「INFILE」の近くに不正な構文があります。私はそれを仮定しました。なぜなら、各行にセミコロンが足りないからです。お知らせ下さい。 – Blob

+0

@ user1091114 'LOAD DATA INFILE'の構文は、' BULK INSERT'の構文と同じではありません。あなたの質問にあなたの新しいSQLを投稿し、実行中のMySQLのバージョンをお知らせください( 'STATUS;'コマンドを発行してサーバのバージョンを取得できます)。 –

+0

私はVisual Studio 2010、SQL 2008内でSQLを使用しています – Blob

0
  1. PetDatabase.Salesは、テキストファイル内に存在していることを確認します。

  2. 使用している行とフィールドのターミネータ区切り文字を入れ替えます。ここで私は

    カンマ区切りファイルからのBULK INSERTを区切り文字を使用していFROM をPetDatabase:( FIELDTERMINATOR = ''、 ROWTERMINATOR = '\ n' は) WITH 'C \一時\のp1.txt' GO - テーブルの内容を確認してください。 SELECT * FROM PetDatabase GO - データベースをクリーンアップするためにテーブルをドロップします。 SELECT *

  3. PetDatabase GO FROM

また、次はあなたには適用されないことを確認してください:

SQL Serverユーザーは、Windows認証を使用してログインしている場合、ユーザーは読み取り専用ことができますSQL Serverプロセスのセキュリティプロファイルとは無関係に、ユーザーアカウントからアクセス可能なファイル。

1つのコンピュータからsqlcmdまたはosqlを使用してBULK INSERT文を実行し、2番目のコンピュータのSQL Serverにデータを挿入し、3番目のコンピュータでUNCパスを使用してdata_fileを指定すると、4861エラーが発生することがあります。

このエラーを解決するには、SQL Server認証を使用し、SQL Serverプロセスアカウントのセキュリティプロファイルを使用するSQL Serverログインを指定するか、セキュリティアカウント委任を有効にするようにWindowsを構成します。

+0

テキストファイルにはどこがありますか?私はこのサイトの情報に従っており、テキストファイル内のどのテーブルも参照していません。 http://msdn.microsoft.com/en-us/library/ms191479.aspx – Blob

+0

フラットファイルの最初の行にフィールド名が含まれている必要があります(フィールド名がある場合)。 fieldname1、fieldname2、filedname3 – Patriotec

+0

MDSNサイトで何が続いているのではなく、ちょっと混乱しているので、私に例を紹介してください。@ – Blob

0

PetDatabaseはスキーマ名またはデータベース名ですか? データベース名の場合は、スキーマ名がdboの場合は、このようにスキーマ名も含めます。

PetDatabase.dbo.Sales 
関連する問題