2016-08-30 5 views
0

Я создаю веб-сайт с использованием ASP.NET MVC 5, и теперь я нахожусь в точке, где мне нужно создать базу данных. Я использую Visual Studio 2015 и создал новый проект базы данных. База данных - это платформа SQL Server 2016. Я пытаюсь взять данные из файла .csv и поместить его в базу данных, но я получаю некоторые ошибки в своем файле SQL.Заполнение SQL Server от проблем csv

CREATE TABLE [dbo].[TestTable] 
(
    [Id] INT NOT NULL PRIMARY KEY, 
    [FirstName] NVARCHAR(50) NULL, 
    [LastName] NVARCHAR(50) NULL, 
    [BirthDate] SMALLDATETIME NULL 
) 
GO 

BULK INSERT TestTable 
FROM 'C:\Users\ajs2987\Documents\projects\TestData.csv' 
WITH 
(
    FIELDTERMINATOR = ',', 
    ROWTERMINATOR = '\n' 
) 
GO 

-- Check the content of the table 
SELECT * 
FROM TestTable 

Ошибка я получаю на заявления BULK и SELECT:

SQL700001: Это утверждение не признается в этом контексте.

Я также прилагается изображение ошибки на моем экране:

DBERROR

Любая помощь будет принята с благодарностью, дайте мне знать, если я могу поставить все больше деталей.

Спасибо!

+0

http://blog.sqlauthority.com/2008/02/06/sql-server-import-csv-file-into-sql-server-using-bulk-insert-load-comma-delimited-file -into-sql-server/ – MethodMan

+0

см. [это] (https://arcanecode.com/2013/03/28/ssdt-error-sql70001-this-statement-is-not-recognized-in-this-context/) –

+0

Эй, @MethodMan, спасибо за быстрый ответ. Я также следовал этому руководству, но, к сожалению, я все еще встречался с той же ошибкой. – ans

ответ

0

Проверьте свойства вашего скрипта. Если для действия сборки установлено значение «build», он попытается запустить код в качестве языка определения данных, но ваш скрипт содержит язык для вставки данных в таблицу. Вам нужно установить значение «none».

-1

Вы смешиваете определения баз данных с данными изменений данных, которые являются большими, нет-нет. Вам нужно переместить операторы BULK INSERT и SELECT в отдельный файл, который не «построен» с вашей базой данных.

Затем вы можете ссылаться на указанный файл как на сценарий после развертывания (или просто запустить его вручную).

См. «Предварительные сценарии и сценарии после развертывания» в примере https://www.infoq.com/articles/SSDT-Intro.

0

Я попробовал сценарий ниже, в качестве примера, и он отлично работал для меня.

CREATE TABLE [dbo].[STAGING] 
(
     [Date] VARCHAR(MAX), 
     Type VARCHAR(MAX), 
     Change VARCHAR(MAX), 
     SP_ID VARCHAR(MAX), 
     Sedol VARCHAR(MAX), 
     Cusip VARCHAR(MAX) 
) 
    bulk insert dbo.STAGING 
    from 'C:\Documents and Settings\Desktop\YOUR_DATA.txt' 
    WITH 
    (
    FIRSTROW = 2, 
    FIELDTERMINATOR = ',', 
    ROWTERMINATOR = '\n' 
) 
    GO 
    INSERT INTO dbo.FINAL 
    SELECT 
     [Date] = CASE WHEN ISDATE([Date])=1 THEN CAST([Date] AS DATETIME) ELSE NULL END, 
     Type, 
     Change, 
     SP_ID, 
     Sedol, 
     Cusip 
    FROM [dbo].[STAGING] 

Убедитесь, что ваш файл разделен запятой ... Я предполагаю, что это так. Кроме того, убедитесь, что в начале файла или в конце файла нет специального символа. Посмотрите в блокнот ++, чтобы убедиться. Иногда вы не можете видеть эти специальные символы, когда вы просто смотрите на CSV. :)