求教高手 关于 BCP IN 问题!!

lostintokyo 2009-04-27 01:48:03
把文本文件里数据插入DB表,表里结构一列 data, 问题是文本文件中的数据没有分隔符,但插入表后,每行都是定长的,比如分割每450字节作为一行,插入表中,请问如何操作,BCP in -r char(450) 可以么??
...全文
191 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
lostintokyo 2009-04-27
  • 打赏
  • 举报
回复
非常感谢,已经结贴。

我的表与你给的例子不同,只有一列,文件也不太相同,我的如下,不知道照你的例子改动有多大。

我的文件
G:\data.txt文件内容如下:
AAAAAABBBBBCCCDD123456

要求得到的结果:

SELECT * FROM tb;

/*
col1
------
AAAAAABBBB
BCCCDD1234
56(后面不足空格补满10位)



liangCK 2009-04-27
  • 打赏
  • 举报
回复
示例:
G:\data.txt文件内容如下:
AAAAAABBBBBCCCDD
1225415612324512
4564q21a3sdfdafe
545f121a7t9d5f65

创建一个表:
CREATE TABLE tb(col1 VARCHAR(6),col2 VARCHAR(5),col3 VARCHAR(3),col4 VARCHAR(4));

生成xml格式化文件
!!bcp MyTest.dbo.tb format nul -f G:\tb_fmt.xml -c -x -Smyfend\liangck -T

G:\tb_fmt.xml格式化文件内容如下(要适当修改):
<?xml version="1.0"?>
<BCPFORMAT xmlns="http://schemas.microsoft.com/sqlserver/2004/bulkload/format" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<RECORD>
<FIELD ID="1" xsi:type="CharFixed" LENGTH="6" COLLATION="Chinese_PRC_90_CI_AS"/>
<FIELD ID="2" xsi:type="CharFixed" LENGTH="5" COLLATION="Chinese_PRC_90_CI_AS"/>
<FIELD ID="3" xsi:type="CharFixed" LENGTH="3" COLLATION="Chinese_PRC_90_CI_AS"/>
<FIELD ID="4" xsi:type="CharTerm" TERMINATOR="\r\n" MAX_LENGTH="2" COLLATION="Chinese_PRC_90_CI_AS"/>
</RECORD>
<ROW>
<COLUMN SOURCE="1" NAME="col1" xsi:type="SQLVARYCHAR"/>
<COLUMN SOURCE="2" NAME="col2" xsi:type="SQLVARYCHAR"/>
<COLUMN SOURCE="3" NAME="col3" xsi:type="SQLVARYCHAR"/>
<COLUMN SOURCE="4" NAME="col4" xsi:type="SQLVARYCHAR"/>
</ROW>
</BCPFORMAT>

使用BULK INSERT导入数据
BULK INSERT tb
FROM 'G:\data.txt'
WITH
(
FORMATFILE='G:\tb_fmt.xml'
);


查看数据:

SELECT * FROM tb;

/*
col1 col2 col3 col4
------ ----- ---- ----
AAAAAA BBBBB CCC DD
122541 56123 245 12
4564q2 1a3sd fda fe
545f12 1a7t9 d5f 65

(4 行受影响)
*/
lostintokyo 2009-04-27
  • 打赏
  • 举报
回复
求各位大虾了!!!
lostintokyo 2009-04-27
  • 打赏
  • 举报
回复
用 -b 450 不可以么?
lostintokyo 2009-04-27
  • 打赏
  • 举报
回复
currency_format1.fmt ????

关键这个格式化文件内容?
ChinaJiaBing 2009-04-27
  • 打赏
  • 举报
回复


EXEC master..xp_cmdshell 'BCP AdventureWorks.sales.currency1 in c:\11.txt -F 10 -L 13 -c -f c:\currency_format1.fmt -T'


lostintokyo 2009-04-27
  • 打赏
  • 举报
回复
求教各位高手了,感激不尽,如何按定长分割文件数据啊,每450为一行,插入表中!!谢谢!!
lostintokyo 2009-04-27
  • 打赏
  • 举报
回复
如何使用啊,能给个写法例子么,十分感谢了,之前没接触过BCP
phpboy 2009-04-27
  • 打赏
  • 举报
回复
看是什么数据了,如果有中文的话,还不一定..
liangCK 2009-04-27
  • 打赏
  • 举报
回复
使用格式化文件.

34,590

社区成员

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

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