2013-03-27 478 views
21

我有几个CSV文件,我想导入到SQL Server数据库。我知道这是否可以用BULK插入,但我想要一个解决方案,这样导入表也是在之前根据CSV文件的第一行自动创建的,是列名。将CSV导入SQL Server(包括自动创建表)

+1

你需要一个程序来做到这一点?您可以使用SQL Server Management Studio导入工具。 – 03Usr 2013-03-27 09:27:36

回答

26

SQL Server Management Studio提供了一个导入/导出向导工具,它可以自动创建表格。

您可以通过右键单击在对象资源管理器数据库和选择任务 - >导入数据访问...

从那里向导应该是不言自明,易于操作。您选择您的CSV作为源,所需的目的地,配置列并运行包。

如果您需要详细的指导,有很多导游网上,这里是一个很好的一个: http://www.mssqltips.com/sqlservertutorial/203/simple-way-to-import-data-into-sql-server/

+4

此链接不包含CSV文件,这是问题。 – rncrtr 2013-04-29 18:10:19

+6

@rncrtr我可以向你保证过程几乎一样。选择平面文件作为源文件而非所描述的excel文件后,有一些选择有些不同,但向导已经足够好,所以它不应该成为一个难以理解的问题。 – 2013-04-29 20:45:15

+0

我正在使用的服务器中没有平面文件选项,所以这对我来说有些死胡同。我发现有一个包含它的单独工具(导入和导出数据工具),但花了一段时间才发现这是使用票据。谢谢。 – rncrtr 2013-04-29 21:05:58

8

您可以创建一个临时表变量并将数据插入其中,然后通过从临时表中选择它将数据插入到实际表中。

declare @TableVar table 
(
    firstCol varchar(50) NOT NULL, 
    secondCol varchar(50) NOT NULL 
) 

BULK INSERT @TableVar FROM 'PathToCSVFile' WITH (FIELDTERMINATOR = ',', ROWTERMINATOR = '\n') 
GO 

INSERT INTO dbo.ExistingTable 
(
    firstCol, 
    secondCol 
) 
SELECT firstCol, 
     secondCol 
FROM @TableVar 

GO 
+2

为什么不直接将它插入现有的表中? – Travis 2014-02-21 20:36:23

+0

我发现你需要使用临时表而不是表变量。请参阅此[回答](http://stackoverflow.com/a/14113855/469637) – Jeff 2014-08-21 00:08:23

+2

无法批量插入到“表变量”中。必须是临时表或实际表格。 – 2015-11-08 06:29:14