500000000.0000 78.2978 99.8374
503436993.6722 78.4932 99.2287
506873987.3444 78.6419 98.6569
如果表中的数据像上面那样,数据之间相隔一个制表符,可以用BULK,程序如下:
BULK INSERT t1
FROM 'c:\85070e2.prn'
WITH (
FIRSTROW = 2,
fieldterminator = '\t',
rowterminator = '\n'
)
但是如果第一列和第二列之间相隔3个空格,而第二和第三之间相隔5个空格
那应该怎么写SQL语句,把表中的数据导入SQL数据库中
是不是不能用bulk,bcp可不可以 不是很熟悉
请大家看看 谢谢
503436993.6722 78.4932 99.2287
506873987.3444 78.6419 98.6569
如果表中的数据像上面那样,数据之间相隔一个制表符,可以用BULK,程序如下:
BULK INSERT t1
FROM 'c:\85070e2.prn'
WITH (
FIRSTROW = 2,
fieldterminator = '\t',
rowterminator = '\n'
)
但是如果第一列和第二列之间相隔3个空格,而第二和第三之间相隔5个空格
那应该怎么写SQL语句,把表中的数据导入SQL数据库中
是不是不能用bulk,bcp可不可以 不是很熟悉
请大家看看 谢谢
如果是execl就可以用:
select * into 表 from
OPENROWSET('MICROSOFT.JET.OLEDB.4.0'
,'Excel 5.0;HDR=YES;DATABASE=c:test.xls',sheet1$)
所以应该可以用bulk,bcp
实现吧 但是就是3列之间相隔不一样 比较麻烦
FROM 'd:\aaa.txt'
WITH
(
FIELDTERMINATOR=' ',
ROWTERMINATOR='\n',
DATAFILETYPE='char'
);
FIELDTERMINATOR=' ',这条语句就是每个字段之间空一格
但是这个表中的数据列之间相隔不一样,是相隔3个空格,5个空格
就是想问还有别的方法没有啊
不知道还有没有别的导入数据库的方法
列数据格式 为文本格式
然后出这个表中读数据出来可以实现
现在又遇到一个问题:就是怎么从第二行开始读啊
BULK INSERT qq1
FROM 'c:\17.prn'
WITH (
FIRSTROW = 2
)
这样好像就出错了 不知道怎么写?
FROM 'd:\aaa.txt'
WITH
(
FIRSTROW = 2 ,
FIELDTERMINATOR=' ',
ROWTERMINATOR='\n',
DATAFILETYPE='char'
);
这个就可以的
FROM 'd:\aaa.txt'
WITH
(
FIRSTROW = 2 ,
-- FIELDTERMINATOR=' ', -- 生成一个列
ROWTERMINATOR='\n',
DATAFILETYPE='char'
);
但是就是有表头去不到
WITH
(
FIRSTROW = 2 ,
ROWTERMINATOR='\n',
DATAFILETYPE='char'
);出现这种情况:(0 行受影响)
@filename varchar(200),
@Hostname varchar(20),
@Username varchar(20),
@Pass varchar(20)
set @filename = 'Yourfilename'
set @Hostname = 'YourHostname'
set @Username = 'YourUsername'
set @Pass = 'YourPassword'
Create table YourTable_tmp(nStr varchar(max))
set @cmd='bcp YourDabaseName..YourTable_tmp in "D:\YourFolder\'+@Filename+'" -r "\n" -c -S'+@Hostname+',1433 -U'+@Username+' -P'+@Pass
Print @cmd
exec master.dbo.xp_cmdshell @cmd
把标题去掉,由于数据是3列,每一列上面有对该列的注释,
即每列的字段,但是现在我想去掉,然后导入数据库。
我手动把第一列的字段去掉,然后用:
Create Table qq(a nvarchar(max))
--将文件导入临时表中
BULK INSERT qq2
FROM 'c:\jianzh_cailiao1.prn'
就可以实现把数据导入表qq中
然后再从该表中读取数据填充到另外一张表中,这张表3列
这样可以实现。
就是郁闷的是怎么从第二行开始读数据,导入到表qq中
BULK INSERT aaa
FROM 'c:\14.txt'
WITH
(
FIRSTROW = 2 ,
-- FIELDTERMINATOR=' ', -- 生成一个列
ROWTERMINATOR='\n',
DATAFILETYPE='char'
);
(0 行受影响)
这是我出的错误,
对,你那种方法是可以,看了下数据,原来第一行的数据,就是字段和下面的数据不对齐,我改了下,把字段和下面的数据对齐就对了。
BULK INSERT也是对那种数据是规范的可以一起导入,但是我的数据是仪器测出来的,规定格式,表格也比较多,想如果能用这种方法实现,那就可以用游标一起导入,就比较方便了。表头和下面不对齐 麻烦