我有一些大文件(aprox。50.000行),有很多列(450列),我想批量插入,但问题是我只想插入220个。有没有办法用sql做这个而不使用一些后端处理?
文件看起来像这样
123434|s2231|1|||0|inet|20150511123344|...........1233123|12|0
并且我的数据库中的star_date
字段也是datetime
,而在我的.csv中,日期就像这样20150511123344
(YYYYmmmddHHmmss格式)在没有预处理的情况下插入它的最佳方法是什么(2015-05-11 12:33:44)?
非常感谢
答案 0 :(得分:2)
您可以使用OPENROWSET Bulk Rowset provider。
以下是链接中的示例:
USE AdventureWorks2012;
DELETE myTestFormatFiles;
GO
INSERT INTO myTestFormatFiles
SELECT *
FROM OPENROWSET(BULK 'C:\myTestFormatFiles-c.Dat',
FORMATFILE='C:\myTestFormatFiles.Xml'
) as t1 ;
GO
SELECT * FROM myTestFormatFiles;
GO
在您的情况下,您将替换"选择*"列列表。您可能需要也可能不需要格式文件,我会首先尝试不使用它。
鉴于该表有400多列,您可以使用bcp.exe generate a format file,假设您可以访问生成bcp文件的服务器和表。
示例命令行,用于为本机数据类型生成格式文件:
bcp AdventureWorks2012.HumanResources.Department format nul -T -n -f Department-n.fmt
创建格式文件后,您可以打开文件以查看列名,然后为SELECT语句构建列列表。