从sql数据库导出csv的方法 - 自勉

时间:2024-03-17 14:32:46
CSV(Comma separated values)文件是一种基本的flat file,文件中的数据以"," 隔开并结合使用" " "。CSV文件除了所存储数据的格式要求不同,其他方面是很相似的,甚至有正确CSV格式的txt文档可以通过该后缀名的无赖方式直接转换成有效的CSV文件。也正因如此,CSV的文件往往很小,实际应用中的将大批量的数据存放在CSV文件中。
生成CSV文件的方法很多,在严格遵照csv语法的情况下,用任何编程语言都可以轻松实现。这里我就把我用到的最简单的两种方法介绍一下。

首先稍麻烦一点的方法:

 

BCP master..sysobjects out c:/sysobjects.txt -c -t, -T –S<servername>

 

 

基本格式如下:
BCP <table> out <filename> <后缀>
后缀如下:

  • -c 输出默认的
  • tab 和 crlf
  • -t Override 终止符为","
  • -T 使用安全连接,必要的时候需要提供  -U –P 来输入用户名和密码
  • -S 链接到相应的server执行命令

这个命令在安装了SQL2000或SQL2005的情况下都可以使用。 只要进到DOS的C盘根目录执行即可。
但是如果你想输出某个表的部分数据或者是更为复杂的操作后的数据 那么你就需要在SQL2005下面执行了。首先因为BCP命令是命令行功能,那么就需要xp_cmdshell来执行。一般情况下这个命令是禁用的,用以下SQL语句"解禁" Select * from sys.configuratios
Order by name // check all configs

Sp_configure \'show advanced options\' , 1;
Go
Reconfigure;
GO
Sp_configure \'xp_cmdshell\', 0;
Go
Reconfigure;
Go // after this you can start to use BCP
Declare @sql varchar(8000)
Selecr @sql = \'bcp master..sysobjects out C:\bcp\test.txt\' + @@servername
Exec master..xp_cmdshell @sql

之后就可以创建View 来代替 master..sysobjects 进而生成任意的csv了。
经验证以上方法并不适用于sql2000,在我发愁之际老板走来,"To me, this seems to be a five minutes work.."
我正要喊冤,想申诉下在google撞得满头是灰的经历,老板用鼠标点向了export选项,这个我早查过了,就等着他皱眉然后说"Bolloks!"
没想到他竟然在输出源(不知翻译的对不对)的地方选了 flat file 。。。 然后直接就可以输出CSV了 更爽的是还可以Customes自己的query语句。。。
我只好在心里边佩服小老板 边鄙视Google 和 微软的帮助文档了

第一次往首页放文章,技术含量不高,但是好像也算符合首页文章的要求,希望将来可以为人所用。

Sorry a,之前排版没有检查好,下次一定把好关。