无效的对象名称'PetDatabase.Sales'
我试图运行以下命令将大量销售数据以文本文件的形式导入到数据库中。当我运行下面的我得到的错误:“无效的对象名称PetDatabase.Sales“无效的对象名称'PetDatabase.Sales'
BULK INSERT PetDatabase.Sales
FROM 'C:\Temp\P1.txt'
WITH
(
FORMATFILE = 'C:\Temp\PetSales.Fmt'
);
任何人都可以看到最新造成我的问题,我有表的文件夹内,但是,当我试图PetsDatabase? Tables.Sales它并没有区别
忽略这个答案时,问题被标记为mysql
它写在这里留下了答案,以保持评论
- 。
尝试使用LOAD DATA INFILE
代替。
我现在得到错误:'INFILE'附近的语法不正确。我认为这是因为我在每一行都错过了一个分号,但是我把它们都放进去了,并没有什么区别。请指教。 – Blob 2012-03-06 18:59:27
@ user1091114 LOAD DATA INFILE的语法与'BULK INSERT'的语法不同。请在您的问题中发布您的新SQL,并让我们知道您正在运行的MySQL版本(您可以发出'STATUS;'命令来获取服务器版本)。 – 2012-03-06 19:01:37
在Visual Studio 2010中使用SQL,SQL 2008 – Blob 2012-03-06 19:12:18
确保PetDatabase.Sales存在于你的文本文件。
-
交换您正在使用的任何行和字段终结符分隔符。这里我使用定界符从逗号分隔文件
BULK INSERT PetDatabase FROM 'C:\ TEMP \ p1.txt' WITH ( FIELDTERMINATOR = '', ROWTERMINATOR = '\ n' ) GO - 检查表格的内容。 SELECT * FROM PetDatabase GO - 使用表格清理数据库。 SELECT * FROM PetDatabase GO
此外,请确保以下不适用于你:
如果SQL Server用户在使用Windows身份验证登录,用户只能读取用户帐户可访问的文件,独立于SQL Server进程的安全配置文件。
当从一台计算机使用sqlcmd或osql执行BULK INSERT语句,将数据插入另一台计算机上的SQL Server,并在第三台计算机上使用UNC路径指定data_file时,可能会收到4861错误。
要解决此错误,请使用SQL Server身份验证并指定使用SQL Server进程帐户的安全配置文件的SQL Server登录名,或配置Windows以启用安全帐户委派。
PetDatabase是模式名称还是数据库名称? 如果它是数据库名称,那么如果您的模式名称是dbo,则也包括模式名称。
PetDatabase.dbo.Sales
恩,是不是'BULK INSERT' SQL Server命令? – 2012-03-06 18:47:29
看起来像MS SQL .. – Teja 2012-03-06 18:51:33
@JoachimIsaksson是。 'BULK INSERT'是一个T-SQL语句,在MySQL中最相当的是'LOAD DATA INFILE'。 – 2012-03-06 18:53:17