社区
疑难问题
帖子详情
bcp批量导入数据问题,来者有分
duanyong707
2006-04-12 04:13:33
谁能告诉我怎样批量根据多个.fmt文件创建表,并批量对多个.dat文件进行bcp数据导入
...全文
500
28
打赏
收藏
bcp批量导入数据问题,来者有分
谁能告诉我怎样批量根据多个.fmt文件创建表,并批量对多个.dat文件进行bcp数据导入
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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)
新手支付对接流程重点
一,选择适合自己支付方式 不同场景选择不同的支付方式,手机端选择H5支付,PC端选择扫码支付或者网银支付。好些新手没有选择对,例如微信移动支付应该选择微信H5支付,但是他选择是微信公众号H5支付,后面就无法接入了。 二,理解第三方支付流程 知道自己的系统和第三方系统是如何交互的,这个很关键也容易被忽略,因为这个不清楚,后面就是老大难,基本上第三方支付平台均提供支付交互图,支付平台大...
【亲测免费】 pay-spring-boot-starter-parent项目常见
问题
解决方案
pay-spring-boot-starter-parent项目常见
问题
解决方案 1. 项目基础介绍和主要编程语言 pay-spring-boot-starter-parent 是一个基于 Spring Boot 的支付对接组件,它允许开发者通过一行代码实现支付聚合,简化支付对接流程。该项目主要使用 Java 编程语言,并且依托于 Spring Boot 和 pay-java 开发工具包,使得开发...
反向海淘独立站避坑指南:3 个新手必踩的技术坑
在跨境电商的热潮下,反向海淘独立站成为不少创业者的新选择。但对于初次涉足的新手而言,其中隐藏着诸多技术 “陷阱”,稍有不慎,就可能让你的创业之路举步维艰。今天,就为大家揭秘 3 个常见且棘手的技术坑,助你提前避雷。
JAVA开发智慧社区管理系统:社区服务 + 电商商城实战
本文基于JAVA技术栈开发智慧社区管理系统,重点实现"社区服务+电商商城"双模块联动。系统采用SpringBoot+Vue主流框架,包含物业报修、便民服务、社区电商等功能模块,通过统一用户体系和
数据
联动,实现"管理+服务+消费"一体化。文章详细阐述了系统架构设计、核心业务流程及开发要点,提供可复用的实战方案,适用于新手练手、毕业设计及小型社区项目落地。方案注重实用性,避免复杂代码,解决了传统社区系统服务单一、消费不便的痛点。
java对接微信支付api3心得(小白易懂)
微信小程序对接微信支付功能,原本sdk会有些局限性,记录此次对接的
问题
以及解决方式
疑难问题
22,296
社区成员
121,728
社区内容
发帖
与我相关
我的任务
疑难问题
MS-SQL Server 疑难问题
复制链接
扫一扫
分享
社区描述
MS-SQL Server 疑难问题
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章