当前位置:  开发笔记 > 编程语言 > 正文

从CSV导入SQL批量导入

如何解决《从CSV导入SQL批量导入》经验,为你挑选了2个好方法。

我需要将一个大型CSV文件导入SQL服务器.我正在使用这个:

BULK 
INSERT CSVTest
        FROM 'c:\csvfile.txt'
            WITH
    (
                FIELDTERMINATOR = ',',
                ROWTERMINATOR = '\n'
    )
GO

问题是我的所有字段都被引号("")包围,所以一行实际上看起来像:

"1","","2","","sometimes with comma , inside", "" 

我可以以某种方式批量导入它们并告诉SQL使用引号作为字段分隔符吗?

编辑:使用'","'作为分隔符的问题,如在建议的示例中那样:大多数示例的作用是,它们是否导入数据,包括第一个"在第一列和最后一个"在最后,然后他们继续把它剥离出来.我的第一个(也是最后一个)列是datetime,不允许将"20080902"导入为datetime.

从我一直在阅读的内容来看,我认为FORMATFILE是可行的方式,但文档(包括MSDN)非常缺乏帮助.



1> K Richard..:

尝试 FIELDTERMINATOR='","'

这是一个很好的链接,以帮助第一个和最后一个引用...看看他如何使用SP的子串

http://www.sqlteam.com/article/using-bulk-insert-to-load-a-text-file



2> cbp..:

我有时使用的另一个黑客是在Excel中打开CSV,然后将sql语句写入每行末尾的单元格中.例如:

=concatenate("insert into myTable (columnA,columnB) values ('",a1,"','",b1,"'")")

填充可以将此填充到每行中.然后只需将输出复制并粘贴到新的查询窗口中.

这是老式学校,但如果你只需要偶尔进行一次进口,那么就可以省去阅读所有晦涩难懂的文件,并以"正确"的方式去做.

推荐阅读
携手相约幸福
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有