今天下午休息的时候又被扔给一项任务:把全国的街道数据导入街道表。但是他们扔给我的SQL脚本是从网上down的一个,跟平台这边的数据库设计的完全不一样。
当时的思路是:先把扔给我的脚本在本地生成一个表,然后选出要的数据,批量插入到开发库所在服务器的表。
然后,按照这个思路做了个测试:
INSERT INTO dbo.test_Street(Code,CountyCode,CnName,VersionNo,Creator,CreateTime,ValidStatus) /*要插入数据的表*/ SELECT NEWID() AS Code,id AS CountryCode,name AS CnName,1 AS VersionNo,'lhc',GETDATE() AS CreateTime,1 AS ValidStatus FROM pre_common_district /*数据来源表*/
之后,用一个烂脚本成功导入4W多条数据,然后,要做的就是把本地数据库中表导入到开发库中。
在这里,我们先使用bcp命令导出数据,然后用Bulk Insert向开发库插入数据:
使用如下命令:
bcp"kfglxt.dbo.test_Street" out f:\test.txt -c -q -S"ZB-LIUHCH-PC\SQLEXPRESS"-T
bcp"kfglxt.dbo.test_Street" out f:\test.Dat -c -q -S"ZB-LIUHCH-PC\SQLEXPRESS"-T(也可以,还支持其他格式)
感觉4W多条数据还是分分钟的事,蛮快的。
除了使用cmd执行,也可以直接在查询分析器中执行:
EXEC kfglxt..xp_cmdshell ' /*这里填写bcp命令*/ '
接下来我们要将备份成文件的数据导入开发库:
USE kfglxt BULK INSERT dbo.test_Street FROM 'f:\test.txt' WITH ( FIELDTERMINATOR = '\t', ROWTERMINATOR = '\n' );
做起来,感觉还是蛮多坑的。。。