心静自然凉~

一杯清茶、二盏淡酒、邀三五知己,诉七八句心语,道九分珍重,怀十分真诚,或伤感、或快乐,无现实之隔阂 、无世俗之势利,如此人生,不亦乐乎!

导航

SQLServer导入导出资料的方法

Posted on 2007-09-20 16:37  Leo.Zhu  阅读(1507)  评论(0编辑  收藏  举报

要将SQLServer中的资料导入导出,可以使用bcp.exe 。

Bcp.exe 程式为SQLServer提供的一个提供DOS的方式和SQLServer进行交互,进行导入导出资料动作。由于是SQLServer自带的工具,所以效能上还很好,测试过导入50W行的资料,效能很好。

格式说明:

Bcp.exe + 数据库名称 + ".." + 数据表名称 in 要导入资料的路径 + "-c -t, " + -U登录DB的用户名 -S服务器名称 -P密码 -R


参数说明:

-c使用char类型做为存储类型,没有前缀且以"\t"做为字段分割符,以"\n"做为行分割符。

-t,表示是用符号"," 为各个栏位的分割符号。

-U 登陆数据库的用户名称

-P 登陆数据的密码

-S 登陆数据库的IP

-R 表示使用本地区域及语言设定进行导入导出动作。


在C# 中只要将 调用Process的类就调用exe就可以了。

ProcessStartInfo psi = new ProcessStartInfo("d:\\test\\bcp.exe", "XXXX..XXXXX in d:\\test\\test_100000.log -c -t\",\" -Usa -P -S\"192.168.0.1\"");
Process proc = Process.Start(psi);
if (proc != null)
{
proc.WaitForExit();
this.ShowStatic(11, "End");
}

如果C# 写的调用程式所在的机器不包括SQLServer的话,可以找一台SQLServer 将里面的bcp.exe Copy 出来就OK了。对了,还需要一些别的文件要一起Copy出来

文件包括

Resources 文件夹\bcp.exe\sqlncli.dll 这3个就可以了。 如果程式的机器不让安装SQLServer, 这是一个很好的选择。


如果程序所在的机器可以安装SQLClient的话,又要导入大量的数据的话,也可以使用

BULK INSERT TABLE FROM '{0}' WITH (FIELDTERMINATOR = '^', ROWTERMINATOR = '\n', FIRSTROW = 1)

这个SQL。