我正在使用ASP.NET MVC 5创建一个网站,现在我需要创建一个数据库。我正在使用Visual Studio 2015并创建了一个新的数据库项目。该数据库是SQL Server 2016平台。我试图从.csv
文件中获取数据并将其放入数据库,但我的SQL文件中出现了一些错误。
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:在此上下文中无法识别此语句。
我还在屏幕上附上了错误图片:
任何帮助将不胜感激,如果我能提供更多细节,请告诉我。
谢谢!
答案 0 :(得分:0)
检查脚本的属性。如果构建操作设置为“构建”,它将尝试将代码作为数据定义语言运行,但您的脚本包含将数据插入表中的语言。您需要将其设置为“无”。
答案 1 :(得分: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]
确保您的文件以逗号分隔...我认为是。此外,请确保文件开头或文件末尾没有特殊字符。查看Notepad ++只是为了确保。有时,当您查看CSV时,您无法看到这些特殊字符。 :)
答案 2 :(得分:-1)
您正在将数据库定义与数据修改语句混合在一起,这是一个很大的禁忌。您需要将BULK INSERT和SELECT语句移动到一个单独的文件中,该文件不是"内置的"与您的数据库。
然后,您可以将所述文件作为部署后脚本引用(或者只是手动运行它)。
参见"部署前和部署脚本"以https://www.infoq.com/articles/SSDT-Intro为例。