有时候我们可能会把CSV中的数据导入到某个数据库的表中,比如做报表分析的时候。 
对于这个问题,我想一点也难不倒程序人员吧!但是要是SQL Server能够完成这个任务,岂不是更好! 
对,SQL Server确实有这个功能。 
首先先让我们看一下CSV文件,该文件保存在我的D:盘下,名为csv.txt,内容是: 
   
现在就是SQL Server的关键部分了;

我们使用的是SQL Server的BULK INSERT命令,关于该命令的详细解释,请点击此处; 
我们先在SQL Server中建立用于保存该信息的一张数据表, 
CREATE TABLE CSVTable( 
Name NVARCHAR(MAX), 
Email NVARCHAR(MAX), 
Area NVARCHAR(MAX) 

然后执行下面的语句:

BULK INSERT CSVTable
FROM 'D:\csv.txt'
WITH(
FIELDTERMINATOR = ',',
ROWTERMINATOR = '\n'
)
SELECT * FROM CSVTable
按F5,执行结果如下:

怎么样?是不是比用程序简单!

但是现在有几个问题需要考虑一下:

1,CSV文件中有的列值是用双引号,有的列值则没有双引号: 
  
如果再次运行上面的语句,得到结果就和上一个结果不同了: 
  
其中有的列就包含双引号了,这应该不是我们想要的结果,要解决这个问题,我们只能利用临时表了,先把CSV导入到临时表中,然后在从这个临时表中导入到最终表的过程中把双引号去掉。 
2,CSV文件的列值全部是由双引号组成的: 
  
这个问题要比上一个稍微复杂点,除了要先把CSV文件导入到临时表中,还必须修改一下在把CSV文件导入到临时表的代码: 
 
注意圈中的部分。 
3,CSV文件的列要多于数据表的列: 
  
而我们的数据表只有三列,如果在执行上面的导入代码,会产生什么结果呢? 
结果就是: 
 
它把后边的全部放在了Area列中了,要处理这个问题,其实也很简单,就是我们把我们想要的列值在数据表中都按顺序建立一列,而把不需要的列值,也在数据表中建立一个,只不过只是一个临时列,在把这个数据表导入到最终表的时候,忽略这个临时列就行了。

--EOF--

Author:兴百放

Web:http://xbf321.cnblogs.com/

Time:2010.3.14

SQL Server:把CSV文件导入到SQL Server表中的更多相关文章

  1. 把CSV文件导入到SQL Server表中

    保存数据库数据直接查询select * from tableName 在数据表格的左上角右击——将结果另存为选择路劲保存好的就是.csv格式的数据 有时候我们可能会把CSV中的数据导入到某个数据库的表 ...

  2. SQL Server 2008R2数据库文件导入到SQL Server 2008数据库中

    最近,电脑重装系统之后,安装了SQL Server 2008.附加数据库文件的时候,发现无法附加,提示版本不对.想起来,原来的数据库版本是SQL Server 2008R2.低版本的数据库管理工具无法 ...

  3. CSV文件导入到SQL Server表中

    USE 数据库名BULK Insert dbo.表名From 'c:\CSV文件名.csv'  WITH (   FIELDTERMINATOR = ',',   ROWTERMINATOR = '\ ...

  4. mdf, ldf文件导入到sql server 2005的方法

    mdf, ldf文件导入到sql server 2005的方法 在实际的工作中, 有很多涉及到数据库资料的备份,转移, 恢复等方面的工作, 但是并不是所有的资料都是以.bak格式存在的, 比如说, 你 ...

  5. PL/SQL Developer 导出csv文件,用excel打开中文显示乱码

      用PL/SQL Developer的导出csv功能把sql语句的查询结果导出到一个csv文件.这个sql查询的结果里面有中文,最后用execel打开的时候发现中文全部是乱码. 方法 1 导出csv ...

  6. C# ASP.NET CSV文件导入数据库

    原文:C# ASP.NET CSV文件导入数据库 using System; using System.Collections.Generic; using System.Text; using Sy ...

  7. [转]csv文件导入Mysql

    本文转自:https://blog.csdn.net/quiet_girl/article/details/71436108 本篇博客主要讲将csv文件导入Mysql的方法(使用命令行). Step1 ...

  8. MySql csv文件导入导出

    一.导出到csv(本地导出) 通过mysql客户端shell连接到服务器,选择使用的数据库,输入sql代码: select * from test_info into outfile '/tmp/te ...

  9. csv文件导入到mysql

    如何将csv文件导入到mysql数据库呢,方法有很多但最简单粗暴的方法还是用sql语句啦,像下面这样. LOAD DATA LOCAL INFILE 'csv文件路径' INTO TABLE 数据表名 ...

随机推荐

  1. pure.css

    注释中address是纠正的意思  等价于correct/*! Pure v0.5.0 Copyright 2014 Yahoo! Inc. All rights reserved. Licensed ...

  2. android C/C++ source files 全局宏定义 .

    \system\core\include\arch\linux-arm AndroidConfig.h * ============================================== ...

  3. POJ 3461 Oulipo(字符串匹配,KMP算法)

    题意:给出几组数据,每组有字符串W和T,问你W在T中出现几次. 思路:字符串长度很大,用KMP算法. 一开始写的是:调用KMP算法查找W在T中是否匹配,若匹配,则个数+1.则接下来T的索引移动相应的距 ...

  4. C# 实现:将一个文件夹下的.png图片全部移动到另一个文件夹

    如题,代码如下: using System; using System.IO; public class FileMove { public FileMove() { // TODO: } // co ...

  5. Android 动画的重复播放

    如果你要的加载xml方式设置动画,而且在xml定义了好几个动画元素比如:<set>    <alpha android:repeatCount="-1" andr ...

  6. lintcode 容易题:Partition Array by Odd and Even 奇偶分割数组

    题目: 奇偶分割数组 分割一个整数数组,使得奇数在前偶数在后. 样例 给定 [1, 2, 3, 4],返回 [1, 3, 2, 4]. 挑战 在原数组中完成,不使用额外空间. 解题: 一次快速排序就可 ...

  7. hdu 1978 How many ways

    #include<stdio.h> #include<string.h> #include<algorithm> using namespace std; int ...

  8. 【nginx运维基础(1)】Nginx的编译安装与使用

    nginx的官方手册: http://nginx.org/en/docs/ 编译安装 下载地址: http://nginx.org/en/download.html # 为了支持rewrite功能,我 ...

  9. HTML5入门2---js获取HTML元素的值

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  10. web服务器、应用服务器、http服务器区别

    引用 WEB服务器.应用程序服务器.HTTP服务器有何区别?IIS.Apache.Tomcat.Weblogic.WebSphere都各属于哪种服务器     Web服务器的基本功能就是提供Web信息 ...