我尝试将 csv 数据导入 mySQL(Windows 7 上的 microsoft slq server 2014)。我使用以下代码
USE [DataAnalytics]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
DROP TABLE [dbo].[npi_yy]
CREATE TABLE [dbo].[npi_yy](
[NPI] [NUMERIC] (10) NULL,
[Entity Type Code] [NUMERIC] (1) NULL,
[Replacement NPI] [NUMERIC] (10) NULL,
[Employer Identification Number (EIN)] [VARCHAR] (9) NULL,
[Provider Organization Name (Legal Business Name)] [VARCHAR] (70) NULL
) ON [PRIMARY]
GO
SET ANSI_PADDING ON
GO
LOAD DATA INFILE
'c:\data\npidata_20050523-20160612_sample2.csv'
INTO TABLE [dbo].[npi_yy]
FIELDS TERMINATED BY ',' ENCLOSED BY '"'
LINES TERMINATED BY '\r\n'
IGNORE 1 LINES;
出现错误:
Msg 102, Level 15, State 1, Line 354
Incorrect syntax near 'INFILE'.
我通过查看空桌子来检查
CREATE TABLE
是否有效。
并通过将文件名放入 explore打开它来检查
c:\data\npidata_20050523-20160612_sample2.csv
是否存在
csv 头:
"NPI","Entity Type Code","Replacement NPI","Employer Identification Number (EIN)","Provider Organization Name (Legal Business Name)"
"1588667638","1","","",""
"1497758544","2","","<UNAVAIL>","CUMBERLAND COUNTY HOSPITAL SYSTEM
"1306849450","1","","",""
"1215930367","1","","",""
"1023011178","2","","<UNAVAIL>","NAPA VALLEY HOSPICE & ADULT DAY SERVICES"
有人知道出了什么问题吗?如有任何帮助,我们将不胜感激。
除了
LOAD DATA
语句外,您发布的代码适用于 Microsoft SQL Server。 LOAD DATA
是特定于 MySQL 的语句。它们是两个不相关的数据库软件,具有不同的语法规则,并且以不同的方式扩展了 SQL 标准。它们不能混合。
LOAD DATA
语句是MySQL提供的标准的扩展。 Microsoft SQL Server 为此提供了 BULK INSERT
语句。
你的代码应该是这样的:
BULK INSERT [dbo].[npi_yy]
FROM 'c:\data\npidata_20050523-20160612_sample2.csv'
WITH (
FIELDTERMINATOR = ',',
FIRSTROW = 2,
ROWTERMINATOR = '\r\n'
)
GO
BULK INSERT
声明的更多信息。
完成此操作的快速方法是;
通过重命名文件扩展名将 csv 文件更改为 txt 文件,并将其命名为 data.txt 并将其放在“下载”文件夹中。
转到 Microsoft SQL Server Studio 并创建一个表并将其命名为 DataTable。
使用管理权限打开您的CMD
输入下面的行;
C:\Users senk\Downloads>data.txt 中的 bcp 数据表 -S ServerIP_here -d DataBaseName_here -U 用户名_here -P 密码_here -q -c -t ","
就是这样