2012-03-06 2 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, не является ли BULK INSERT командой SQL Server? –

+0

Похож на MS SQL. – Teja

+0

@JoachimIsaksson Yup. 'BULK INSERT' - это оператор T-SQL, и наиболее эквивалентным в MySQL является' LOAD DATA INFILE'. –

ответ

2

Игнорировать этот ответ он был написан, когда вопрос был помечен mysql Оставляя ответ здесь, чтобы держать комментарии

-....

Попробуйте использовать LOAD DATA INFILE вместо этого.

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

Я использую SQL в Visual Studio 2010, SQL 2008 – Blob

0
  1. Убедитесь, что PetDatabase.Sales существует в текстовом файле.

  2. Поменяйте местами, какие используются ограничители строк и полей. Здесь я использую разделители из разделенных запятыми файла

    BULK INSERT PetDatabase FROM 'C: \ TEMP \ p1.txt' С ( FIELDTERMINATOR = '', ROWTERMINATOR = '\ п' ) GO - Проверьте содержимое таблицы. SELECT * FROM PetDatabase GO - Очистить таблицу, чтобы очистить базу данных. SELECT * FROM PetDatabase GO

Кроме того, убедитесь, что следующее не относится к вам:

Если пользователь SQL Server регистрируется при помощи проверки подлинности Windows, пользователь может читать только файлы, доступные для учетной записи пользователя, независимо от профиля безопасности процесса SQL Server.

При выполнении инструкции BULK INSERT с использованием sqlcmd или osql с одного компьютера, вставляя данные в SQL Server на второй компьютер и указывая файл данных на третьем компьютере с использованием UNC-пути, вы можете получить ошибку 4861.

Чтобы устранить эту ошибку, используйте проверку подлинности SQL Server и укажите учетную запись SQL Server, в которой используется профиль безопасности учетной записи процесса SQL Server, или настройте Windows для включения делегирования учетной записи безопасности.

+0

Куда он должен присутствовать в моем текстовом файле? Я следил за информацией на этом сайте и не ссылаюсь на любые таблицы в текстовом файле. http://msdn.microsoft.com/en-us/library/ms191479.aspx – Blob

+0

Ваша первая строка в плоском файле должна содержать имена полей, если у вас есть имена полей вообще. имя_файла1, имя_файла2, filedname3 – Patriotec

+0

Пожалуйста, не могли бы вы ссылаться на пример, так как его не то, что ive следовало на сайте MDSN, и немного смутно: @ – Blob

0

Является ли PetDatabase именем схемы или именем базы данных? Если это имя базы данных, укажите имя схемы так же, как если бы имя вашей схемы было dbo.

PetDatabase.dbo.Sales