无效的对象名称'PetDatabase.Sales'

时间:2012-03-06 18:43:32

标签: sql sql-server sql-server-2008 bulkinsert

我尝试运行以下操作,将文本文件中的大量销售数据导入数据库。当我运行以下操作时,我收到错误:“无效的对象名称'PetDatabase.Sales'

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

任何人都能看到导致我问题的原因吗?我确实在一个文件夹中有表格;但是,当我尝试PetsDatabase.Tables.Sales时,没有任何区别。

3 个答案:

答案 0 :(得分:2)

忽略这个答案。它是在问题标记为mysql时编写的。在这里留下答案以保留评论。

-

请尝试使用LOAD DATA INFILE

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

答案 1 :(得分:0)

  1. 确保文本文件中存在PetDatabase.Sales。

  2. 切换您正在使用的行和字段终止符分隔符。这里我使用逗号分隔文件中的分隔符

    BULK INSERT PetDatabase FROM'c:\ temp \ p1.txt' WITH ( FIELDTERMINATOR =',', ROWTERMINATOR ='\ n' ) 走 - 检查表格的内容。 选择 * 来自PetDatabase 走 - 删除表以清理数据库。 选择 * 来自PetDatabase GO

  3. 另外,请确保以下内容不适用于您:

    如果SQL Server用户使用Windows身份验证登录,则用户只能读取用户帐户可访问的文件,而与SQL Server进程的安全配置文件无关。

    使用sqlcmd或osql执行BULK INSERT语句时,从一台计算机上,在第二台计算机上将数据插入SQL Server,并使用UNC路径在第三台计算机上指定data_file,可能会收到4861错误。 / p>

    要解决此错误,请使用SQL Server身份验证并指定使用SQL Server进程帐户的安全配置文件的SQL Server登录,或配置Windows以启用安全帐户委派。

答案 2 :(得分:0)

PetDatabase是模式名称还是数据库名称? 如果它是数据库名称,那么如果您的模式名称是dbo,则包括模式名称。

PetDatabase.dbo.Sales