BULK INSERT 导入数据

ljq0310 2011-08-25 06:17:05
环境:sql server 2005
要导入一个文本的数据,格式是:
1|1|
3|75|
FJ1|FJ02|432|spO2|02|1|25|03|281001|12|22|20110823010101|yo|
FJ2|FJ02|432|spO2|02|1|25|03|182|12|22|20110823010101|yo|
FJ3|FJ02|432|spO2|02|1|25|03|183|12|22|20110823010101|yo|

头两行是对本数据文件的说明:如 第一行的第一个1为共一个数据源文件,第二个1为第一个数据文件;第二行的 3 代表的是本文件有3条数据,75为金额总和,从第三行开始就是正式的数据源了。
实现的功能是,先取得头两行的4个数据,然后导入下面的数据,并汇总,核对数目,确认则导入表。
用存储过程实现导入时,我用 BULK INSERT导入,但是因为头两行的列才2列,请问有什么办法可以按这个格式导入呢,求解,列分隔符是 | ,行分隔符是 |\n
导入时,DBMS会把头三行 误认为 同一行存到表里面,从第四行开始才是正常的,并且第四行存进去成第二行了。
试了很多方法,我自己先用BULK INSERT ,设置lastrow=2,导入的数据,然后对各列进行特殊处理,然后才第二次导入,设置firstrow=2,这样导的话,第一行便产生了一个空格(伪空格),导入后如下
FJ1 FJ02 432 spO2 02 1 25 03 281001 12 22 20110823010101 yo
FJ2 FJ02 432 spO2 02 1 25 03 182 12 22 20110823010101 yo
FJ3 FJ02 432 spO2 02 1 25 03 183 12 22 20110823010101 yo
可是对“ FJ1” 用Ltrim,甚至复制那个空格,去空格函数啊,替换函数啊,就是没办法把这个空格去掉,因为这个长度又不一定,因此也没法用截断函数。。。
求高手帮忙

...全文
79 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
ljq0310 2011-08-30
  • 打赏
  • 举报
回复
是程序在半夜自动进行的。。。程序端不做这个处理。。。
q465897859 2011-08-29
  • 打赏
  • 举报
回复
在文本文件先不那两行删了 在导入 不就不会出现了
ljq0310 2011-08-29
  • 打赏
  • 举报
回复
楼上,我自己本身就是这么做的,可是当头里两行不等时,就是会出现空格啊。。。
继续求助。。。
小金牛儿 2011-08-26
  • 打赏
  • 举报
回复
这是我写的一个Demo,希望对你有帮助

c盘文件:
1,DSJ-120,电视机,1865.00,15
2,DSJ-180,电视机,2073.00,10
3,XYJ-13,洗衣机,486.00,20
4,XYJ-20,洗衣机,873.00,12
5,DBX-134,电冰箱,1456.00,8
6,DSJ-340,电视机,3726.00,5
7,WBL-6,微波炉,640.00,10
8,KTQ-12,空调器,2800.00,12


SQL:

CREATE TABLE TESTBLUK
(
TID INT PRIMARY KEY,
TCODE VARCHAR(200),
TNAME varchar(100),
PRICE DECIMAL,
TCOUNT INT
)

--FIELDTERMINATOR列分隔符 ROWTERMINATOR 行分隔符
BULK INSERT TESTBLUK FROM 'c:\Demo.txt' WITH (FIELDTERMINATOR = ',',ROWTERMINATOR = '\n')

34,588

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧