SQL Server:把CSV文件导入到SQL Server表中
有时候我们可能会把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表中的更多相关文章
- 把CSV文件导入到SQL Server表中
保存数据库数据直接查询select * from tableName 在数据表格的左上角右击——将结果另存为选择路劲保存好的就是.csv格式的数据 有时候我们可能会把CSV中的数据导入到某个数据库的表 ...
- SQL Server 2008R2数据库文件导入到SQL Server 2008数据库中
最近,电脑重装系统之后,安装了SQL Server 2008.附加数据库文件的时候,发现无法附加,提示版本不对.想起来,原来的数据库版本是SQL Server 2008R2.低版本的数据库管理工具无法 ...
- CSV文件导入到SQL Server表中
USE 数据库名BULK Insert dbo.表名From 'c:\CSV文件名.csv' WITH ( FIELDTERMINATOR = ',', ROWTERMINATOR = '\ ...
- mdf, ldf文件导入到sql server 2005的方法
mdf, ldf文件导入到sql server 2005的方法 在实际的工作中, 有很多涉及到数据库资料的备份,转移, 恢复等方面的工作, 但是并不是所有的资料都是以.bak格式存在的, 比如说, 你 ...
- PL/SQL Developer 导出csv文件,用excel打开中文显示乱码
用PL/SQL Developer的导出csv功能把sql语句的查询结果导出到一个csv文件.这个sql查询的结果里面有中文,最后用execel打开的时候发现中文全部是乱码. 方法 1 导出csv ...
- C# ASP.NET CSV文件导入数据库
原文:C# ASP.NET CSV文件导入数据库 using System; using System.Collections.Generic; using System.Text; using Sy ...
- [转]csv文件导入Mysql
本文转自:https://blog.csdn.net/quiet_girl/article/details/71436108 本篇博客主要讲将csv文件导入Mysql的方法(使用命令行). Step1 ...
- MySql csv文件导入导出
一.导出到csv(本地导出) 通过mysql客户端shell连接到服务器,选择使用的数据库,输入sql代码: select * from test_info into outfile '/tmp/te ...
- csv文件导入到mysql
如何将csv文件导入到mysql数据库呢,方法有很多但最简单粗暴的方法还是用sql语句啦,像下面这样. LOAD DATA LOCAL INFILE 'csv文件路径' INTO TABLE 数据表名 ...
随机推荐
- C# type - IsPrimitive
Type t = typeof(string); if (t.IsPrimitive)//not { Console.WriteLine("string is a Primitive&quo ...
- C# 越来越复杂了
自从三年前来到现在的公司以后,基本上不怎么使用.NET进行开发了.但最近因为公司有个CRM的项目,所以只有重新检起.NET进行开发. 因为近3年没有搞.NET的开发了,因此也不敢乱整个框架,在看了一周 ...
- 在Eclipse中使用Propertites Editor插件来解决property文件中文显示乱码
在一般情况下,propertites文件在eclipse中的显示中文一直显示乱码,想要解决这个问题,需要通过在eclipse中安装一个Propertites Editor插件来进行解决. 在Eclip ...
- Nginx正确记录post日志的方法
Nginx正确记录post日志的方法 事实上可以很简单,这取决于把 access_log 放在哪个 location 里面. 一,放到包含fastcgi_pass或proxy_pass的Locatio ...
- python正则表达式——re模块
http://blog.csdn.net/zm2714/article/details/8016323 re模块 开始使用re Python通过re模块提供对正则表达式的支持.使用re的一般步骤是先将 ...
- java基础知识回顾之java Thread类学习(九)--wait和notify区别
wait和sleep区别: 相同点:调用wait,sleep方法都可以是线程进入阻塞状态,让出cpu的执行权. 不同点:1.sleep必须指定时间,但是wait方法可以指定时间,也可以不指定时间. ...
- **【ci框架】精通CodeIgniter框架
http://blog.csdn.net/yanhui_wei/article/details/25803945 一.大纲 1.codeigniter框架的授课内容安排 2.codeigniter框架 ...
- [SQL Server系] -- 基本概念
以下是我总结的 SQL Server 数据库中的一些 基本概念,以便模糊时查询, 欢迎补充 1:主键: 概念: 数据表 经常有 一个列 或 列的组合,其值能唯一地标识表中的每一行.这样的一列或多列称 ...
- cognos8.3 sample在DB2里的安装
db2 create db c83 alias c83 using codeset UTF-8 territory CA 创建sample数据库 db2set db2codepage= db2 cha ...
- cojs 安科赛斯特 题解报告
QAQ 从IOI搬了一道题目过来 官方题解貌似理论上没有我的做法优,我交到BZOJ上也跑的飞快 结果自己造了个数据把自己卡成了4s多,真是忧桑的故事 不过貌似原题是交互题,并不能离线 说说我的做法吧 ...