社区
疑难问题
帖子详情
bcp批量导入数据问题,来者有分
duanyong707
2006-04-12 04:13:33
谁能告诉我怎样批量根据多个.fmt文件创建表,并批量对多个.dat文件进行bcp数据导入
...全文
446
28
打赏
收藏
bcp批量导入数据问题,来者有分
谁能告诉我怎样批量根据多个.fmt文件创建表,并批量对多个.dat文件进行bcp数据导入
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
28 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
duanyong707
2006-04-14
打赏
举报
回复
我的那个script文件不知道用什么打开,那好像是sqlserver产生的,具体怎么来的我就不知道了,谁能告诉我怎么打开这个文件,
我执行建表那段程序时候出现错误:
(所影响的行数为 7 行)
服务器: 消息 170,级别 15,状态 1,行 2
第 2 行: '@fmtfile' 附近有语法错误。
服务器: 消息 170,级别 15,状态 1,行 2
第 2 行: '@fmtfile' 附近有语法错误。
服务器: 消息 170,级别 15,状态 1,行 2
第 2 行: '@fmtfile' 附近有语法错误。
服务器: 消息 170,级别 15,状态 1,行 2
第 2 行: '@fmtfile' 附近有语法错误。
zjcxc
2006-04-14
打赏
举报
回复
如果你的sql功底不够好, 可能你较难保证比较成功的完成这次任务
zjcxc
2006-04-14
打赏
举报
回复
-- 我少写了一个,
-- 根据fmt文件建表
DECLARE @Path nvarchar(1000), @sql nvarchar(1000), @tbname sysname
SELECT @Path = 'd:\test' -- fmt 文件所在的目录
-- 导入处理
CREATE TABLE #(fname nvarchar(1000))
SET @sql = 'DIR ' + @Path + '*.fmt'
INSERT # EXEC master.dbo.xp_cmdshell @sql
IF @@ROWCOUNT = 0
RETURN
DECLARE tb CURSOR LOCAL
FOR
SELECT N'EXEC p_fmt2table @tbname = ' + QUOTENAME(LEFT(fname, LEN(fname) - 4), '''') + N'
,@fmtfile = ''' + @Path + fname + ''''
FROM #
OPEN tb
FETCH tb INTO @sql
WHILE @@FETCH_STATUS = 0
BEGIN
EXEC(@sql)
FETCH tb INTO @sql
END
CLOSE tb
DEALLOCATE tb
DROP TABLE #
duanyong707
2006-04-13
打赏
举报
回复
这个Script.dat文件对应一个Script.spt不过是空的,这是怎么产生的
duanyong707
2006-04-13
打赏
举报
回复
现在就是没有表,是一个空库,需要建立所有的表
对了zjcxc(邹建) 大哥
文件夹里还有这个文件
Script.dat
用记事本打开内容如下好像是创建所有表的语句,
?嘟 _ O Title J WIDTH ,Script J WIDTH @ z _ t a b B Z ?C R E A T E T A B L E [ d b o ] . [ z _ t a b B Z ] (
[ S S Z T ] [ i n t ] N O T N U L L ,
[ B Z D M ] [ i n t ] N O T N U L L ,
[ B Z M C ] [ c h a r ] ( 2 0 ) N U L L ,
[ B Z J C ] [ c h a r ] ( 1 0 ) N U L L ,
[ B Z B Z ] [ c h a r ] ( 4 ) N U L L ,
[ B Z H L ] [ n u m e r i c ] ( 1 5 , 4 ) N U L L ,
[ S C B Z ] [ i n t ] N U L L
) O N [ P R I M A R Y ]
z _ t a b C Z R Z JC R E A T E T A B L E [ d b o ] . [ z _ t a b C Z R Z ] (
[ S S Z T ] [ i n t ] N U L L ,
[ C Z D M ] [ i n t ] N U L L ,
[ C Z Y H ] [ c h a r ] ( 2 0 ) N U L L ,
[ C Z R Q ] [ d a t e t i m e ] N U L L ,
[ W C Q K ] [ i n t ] N U L L
) O N [ P R I M A R Y ]
z _ t a b D Q P Z |C R E A T E T A B L E [ d b o ] . [ z _ t a b D Q P Z ] (
[ P Z D M ] [ i n t ] N O T N U L L ,
[ P Z L X ] [ i n t ] N O T N U L L ,
[ P Z L X H ] [ i n t ] N U L L ,
[ Z D S D ] [ i n t ] N U L L ,
[ Q T M K P Z ] [ i n t ] N U L L ,
[ S S Z T ] [ i n t ] N O T N U L L ,
[ P Z R Q N ] [ i n t ] N O T N U L L ,
[ P Z R Q Y ] [ i n t ] N O T N U L L ,
[ P Z R Q R ] [ i n t ] N U L L ,
[ C J Y H ] [ c h a r ] ( 2 0 ) N U L L ,
[ S H Y H ] [ c h a r ] ( 2 0 ) N U L L ,
[ S H B Z ] [ i n t ] N U L L ,
[ J Z B Z ] [ i n t ] N O T N U L L ,
[ J Z Y H ] [ c h a r ] ( 2 0 ) N U L L ,
[ F D Z S ] [ i n t ] N U L L ,
[ P Z Z Y ] 等等
vovo2000
2006-04-13
打赏
举报
回复
只要数据库中有对应的表的话,可以阿
areswang
2006-04-13
打赏
举报
回复
mark
duanyong707
2006-04-13
打赏
举报
回复
我的数据.dat和.fmt是bcp方式导出的,他就不能直接导入到一个空库里面去吗,既然能够连表格式文件都导出来,为什么不能直接恢复进空库呢
OracleRoob
2006-04-13
打赏
举报
回复
最好使用存储过程,函数不支持
如果使用代码块,就直接把存储过程中代码摘出来即可
duanyong707
2006-04-13
打赏
举报
回复
还有就是能不能不用存储过程,代码应该怎样写
vovo2000
2006-04-13
打赏
举报
回复
帮搂主顶一下,
老大就帮忙帮到底吧
xiaoku
2006-04-13
打赏
举报
回复
学习...
duanyong707
2006-04-13
打赏
举报
回复
.fmt文件的格式如下:
7.0
51
1 SQLINT 1 4 "" 1 KMND
2 SQLCHAR 0 23 "" 2 KMDM
3 SQLCHAR 0 100 "" 3 KMMC
4 SQLINT 1 4 "" 4 KMFL
5 SQLINT 0 4 "" 5 SSZT
6 SQLINT 1 4 "" 6 KMJS
7 SQLINT 1 4 "" 7 DXKM
8 SQLINT 1 4 "" 8 YEFX
9 SQLNUMERIC 1 19 "" 9 QCYE
10 SQLNUMERIC 1 19 "" 10 QCWBYE
11 SQLNUMERIC 1 19 "" 11 QCSL
12 SQLNUMERIC 1 19 "" 12 YE
13 SQLNUMERIC 1 19 "" 13 WBYE
14 SQLNUMERIC 1 19 "" 14 SL
15 SQLNUMERIC 1 19 "" 15 SCYE
16 SQLNUMERIC 1 19 "" 16 SCWBYE
17 SQLNUMERIC 1 19 "" 17 SCSL
18 SQLNUMERIC 1 19 "" 18 NCYE
19 SQLNUMERIC 1 19 "" 19 NCWBYE
20 SQLNUMERIC 1 19 "" 20 NCSL
21 SQLNUMERIC 1 19 "" 21 SSJFRFSE
22 SQLNUMERIC 1 19 "" 22 SSDFRFSE
23 SQLNUMERIC 1 19 "" 23 SSRCXFSE
24 SQLNUMERIC 1 19 "" 24 SSJFYFSE
25 SQLNUMERIC 1 19 "" 25 SSDFYFSE
26 SQLNUMERIC 1 19 "" 26 SSYCXFSE
27 SQLNUMERIC 1 19 "" 27 SSJFJFSE
28 SQLNUMERIC 1 19 "" 28 SSDFJFSE
29 SQLNUMERIC 1 19 "" 29 SSJCXFSE
30 SQLNUMERIC 1 19 "" 30 SSJFNFSE
31 SQLNUMERIC 1 19 "" 31 SSDFNFSE
32 SQLNUMERIC 1 19 "" 32 SSNCXFSE
33 SQLNUMERIC 1 19 "" 33 SSJFLFSE
34 SQLNUMERIC 1 19 "" 34 SSDFLFSE
35 SQLNUMERIC 1 19 "" 35 SSLCXFSE
36 SQLNUMERIC 1 19 "" 36 JFRFSE
37 SQLNUMERIC 1 19 "" 37 DFRFSE
38 SQLNUMERIC 1 19 "" 38 RCXFSE
39 SQLNUMERIC 1 19 "" 39 JFYFSE
40 SQLNUMERIC 1 19 "" 40 DFYFSE
41 SQLNUMERIC 1 19 "" 41 YCXFSE
42 SQLNUMERIC 1 19 "" 42 JFJFSE
43 SQLNUMERIC 1 19 "" 43 DFJFSE
44 SQLNUMERIC 1 19 "" 44 JCXFSE
45 SQLNUMERIC 1 19 "" 45 JFNFSE
46 SQLNUMERIC 1 19 "" 46 DFNFSE
47 SQLNUMERIC 1 19 "" 47 NCXFSE
48 SQLNUMERIC 1 19 "" 48 JFLFSE
49 SQLNUMERIC 1 19 "" 49 DFLFSE
50 SQLNUMERIC 1 19 "" 50 LCXFSE
51 SQLINT 1 4 "" 51 SCBZ
duanyong707
2006-04-13
打赏
举报
回复
我的这些文件是放在本地d:\test目录下的
具体的存储过程、创建表的批处理,批处理执行bcp应该怎么写
duanyong707
2006-04-13
打赏
举报
回复
太感谢你了,我的那些数据表名和.fmt .dat文件名是一致的,我对这方面不是很懂,突然领导让我做这个,我都不知道该如何下手,我是做服务的,不是做开发的,还望您能写出详细的代码
所有文件的样式如下:
z_tabCZRZ.dat
z_tabCZRZ.fmt
z_tabBZ.dat
z_tabBZ.fmt
.....
zjcxc
2006-04-13
打赏
举报
回复
-- 下面的批处理语句实现导入数据
DECLARE @Path nvarchar(1000), @sql nvarchar(1000), @tbname sysname
SELECT @Path = 'd:\test' -- fmt 文件所在的目录
-- 导入处理
CREATE TABLE #(fname nvarchar(1000))
SET @sql = 'DIR ' + @Path + '*.fmt'
INSERT # EXEC master.dbo.xp_cmdshell @sql
IF @@ROWCOUNT = 0
RETURN
DECLARE tb CURSOR LOCAL
FOR
SELECT N'BCP ' + DB_NAME() + '.dbo.' + LEFT(fname, LEN(fname) - 4)
+ N' IN "' + @Path + LEFT(fname, LEN(fname) - 4) + '.dat" '
+ N' /f"' + @Path + fname + '" /T /S"' + @@SERVERNAME + '"'
FROM #
OPEN tb
FETCH tb INTO @sql
WHILE @@FETCH_STATUS = 0
BEGIN
EXEC master.dbo.xp_cmdshell @sql
FETCH tb INTO @sql
END
CLOSE tb
DEALLOCATE tb
DROP TABLE #
zjcxc
2006-04-13
打赏
举报
回复
如果不管那个script文件, 则下面的批处理实现根据 fmt 文件建表
当然, 在执行下面的语句之前, 你要执行之前我帖出的那个存储过程的代码创建存储过程
(不然根据fmt文件建表的语句会写得很复杂)
-- 根据fmt文件建表
DECLARE @Path nvarchar(1000), @sql nvarchar(1000), @tbname sysname
SELECT @Path = 'd:\test' -- fmt 文件所在的目录
-- 导入处理
CREATE TABLE #(fname nvarchar(1000))
SET @sql = 'DIR ' + @Path + '*.fmt'
INSERT # EXEC master.dbo.xp_cmdshell @sql
IF @@ROWCOUNT = 0
RETURN
DECLARE tb CURSOR LOCAL
FOR
SELECT N'EXEC p_fmt2table @tbname = ' + QUOTENAME(LEFT(fname, LEN(fname) - 4), '''') + N'
@fmtfile = ''' + @Path + fname + ''''
FROM #
OPEN tb
FETCH tb INTO @sql
WHILE @@FETCH_STATUS = 0
BEGIN
EXEC(@sql)
FETCH tb INTO @sql
END
CLOSE tb
DEALLOCATE tb
DROP TABLE #
yellow1234
2006-04-13
打赏
举报
回复
学习 :)
xeqtr1982
2006-04-13
打赏
举报
回复
学习 :)
zjcxc
2006-04-13
打赏
举报
回复
你帖出的这个脚本有点怪, 估计是你用来打开这个脚本文件的工具不太对, 所以编码格式有些问题.
加载更多回复(8)
WEB开发文档2 总结
http://blog.donews.com/lvjiyong/archive/2006/06/29/931071.aspx怎样将后台生成的在内存中的图象显示到客户端Microsoft IE WebControls下载...显示
数据
下载中文名文件时保存文件名乱码
问题
关于用ASP.net绘图的
问题
...
MS-SQL Server 基础类 - SQL语句
请教SQL语句或其它方法:一个含TEXT字段的表,我无意间用了两次
BCP
重复
导入
数据
,之后表中有... 请问怎样编写SQL语句:在成绩列输入
数据
,然后对其进行排序,并把结果存入排名列. sqlserver中如何选取查询结果的中间某...
人工智能DeepSeek赋能职场:从提示语技巧到多场景应用的人机协同解决方案设计
内容概要:本文介绍了DeepSeek在职场中的应用,从提示语技巧到多场景应用,涵盖了DeepSeek的基础模型(V3)、深度思考模型(R1)及其联网搜索功能。文中详细描述了DeepSeek的模型对比,包括操作规范、结果导向、路径灵活性、响应模式和风险特征等方面。此外,还探讨了DeepSeek在制作可视化图表、PPT、海报、视频以及
批量
生成新媒体文案等具体应用场景中的使用方法和技巧。最后,文章展示了DeepSeek在市场调查、AI应用开发等方面的应用实例,强调了其在人机协同和共生领域的潜力。 适用人群:适用于希望提升工作效率和创新能力的职场人士,特别是从事
数据
分析、内容创作、市场营销、AI开发等领域的专业人士。 使用场景及目标:①通过DeepSeek的基础模型(V3)和深度思考模型(R1)进行高效的任务处理和复杂推理;②利用DeepSeek制作可视化图表、PPT、海报和视频,提高内容创作的质量和效率;③通过DeepSeek进行市场调查和AI应用开发,优化业务流程并推动创新。 其他说明:DeepSeek不仅提供了强大的AI工具,还强调了人机协同的重要性。用户在使用过程中应注意操作规范,结合实际需求选择合适的模型,并充分利用DeepSeek的各项功能来实现高效的职场应用。文中还提到了多个国际竞赛中的获奖情况,展示了DeepSeek团队在AI领域的卓越实力。
SGISLOPSAWindows等级保护测评作业基础指导书.docx
SGISLOPSAWindows等级保护测评作业基础指导书.docx
TG-2025-07-11-195735601.mp4
TG-2025-07-11-195735601.mp4
疑难问题
22,300
社区成员
121,734
社区内容
发帖
与我相关
我的任务
疑难问题
MS-SQL Server 疑难问题
复制链接
扫一扫
分享
社区描述
MS-SQL Server 疑难问题
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章