EXEC master..xp_cmdshell 'bcp test.dbo.P_Aspect in c:\temp1.txt -c -q -S"servername" -U"sa" -P""'
解决方案 »
- money类型数据的问题-真是个大的Bug
- 在查询分析器里调试执行某个带参数的存储过程,为什么这里面显示的错误和用这里面显示的select语句再调试后显示的错误不一样
- 请教一个SQL语句
- 还是一个字段合计(合并)的问题
- SQL2005储存过程里varchar(8000)字符变量远远超过8000怎么办?求助
- select 'it's up to you!' 中的单引号问题
- 事物@@trancount为什么由0到2
- 请问,我用odbc去连SQL SERVER库,得到的记录集是只读的,为什么???Thanks!!!
- 现在学什么语言好呀,vb?c#?asp.net?sql?delphi?java?
- 高效的SQLserver分页存储过程
- 一个对于我来说难的问题!所有的朋友都来都来看看!
- 求一更新表记录的存储过程,望大家帮忙
你这样仅仅知道数据表的每个字段的长度啊,现在是数据导入的问题,我现在暂时没有办法,只好进行转换,但数据很大,有600M左右,所以运行很慢,转换后再用BCP导入又要花时间,是对移动用户的清单文件进行处理.
FROM 'e:\tx1.txt'
WITH (
FIELDTERMINATOR = '\t',
ROWTERMINATOR = '\n'
)前提條件是表如kind要存在,而且字段與test.txt字段數目要一樣多
在查詢分析器中運行,而且是以sa用戶登錄
1!13509053000!20041012!13826310006!0000.40!0000.00!1
1!13509053000!20041012!13826310007!0000.40!0000.00!1
1!13509053000!20041011!13826310007!0000.40!0000.00!1
就可以用语句:
BULK INSERT daylistdatabase.dbo.DayList
FROM 'E:\daylistcount\aa.txt'
WITH (
FIELDTERMINATOR = '!',
ROWTERMINATOR = '\n')
进行导入.
现在的格式如下:
11350905300020041012138263100060000.400000.001
11350905300020041012138263100070000.400000.001
11350905300020041011138263100070000.400000.001
用
BULK INSERT daylistdatabase.dbo.DayList
FROM 'E:\daylistcount\aa.txt'
WITH (
FIELDTERMINATOR = '\t',
ROWTERMINATOR = '\n')
就会产生以下的错误问题:
服务器: 消息 4832,级别 16,状态 1,行 1
大容量插入: 在数据文件中遇到意外的文件结尾 (EOF)。
服务器: 消息 7399,级别 16,状态 1,行 1
OLE DB 提供程序 'STREAM' 报错。提供程序未给出有关错误的任何信息。
OLE DB 错误跟踪[OLE/DB Provider 'STREAM' IRowset::GetNextRows returned 0x80004005: 提供程序未给出有关错误的任何信息。]。
语句已终止。CREATE TABLE [dbo].[daylist] (
[district] [char] (1) COLLATE Chinese_PRC_CI_AS NULL ,
[phone] [char] (11) COLLATE Chinese_PRC_CI_AS NULL ,
[rq] [datetime] NULL ,
[telnum] [char] (18) COLLATE Chinese_PRC_CI_AS NULL ,
[move_fee] [decimal](7, 2) NULL ,
[long_fee] [decimal](7, 2) NULL ,
[user_type] [char] (1) COLLATE Chinese_PRC_CI_AS NULL
) ON [PRIMARY]
GO
FROM 'E:\daylistcount\aa.txt'
WITH (
FIELDTERMINATOR = '.',
ROWTERMINATOR = '\n')
BULK INSERT daylistdatabase.dbo.DayList
FROM 'E:\daylistcount\aa.txt'
WITH (
formatfile=c:\format.fmt
)
请参考:
1:不带有条件的从文本导入到数据库:
EXEC master..xp_cmdshell 'BCP bank..sss in E:\实验用数据库\ddd.txt -c -S7824558CF32B4F1\SQL01 -Usa -P520520'2:不带有条件的从数据库导出到文本:
EXEC master..xp_cmdshell 'BCP bank..bank out E:\实验用数据库\aaa.txt -c -S7824558CF32B4F1\SQL01 -Usa -P520520'3:带有条件的从数据库导出(转换成本)
EXEC master..xp_cmdshell 'BCP "select * from bank..sss where conut<10 " queryout E:\实验用数据库\sss.txt -c -S7824558CF32B4F1\SQL01 -Usa -P520520'/******* 导出到excel
EXEC master..xp_cmdshell 'bcp SettleDB.dbo.shanghu out c:\temp1.xls -c -q -S"GNETDATA/GNETDATA" -U"sa" -P""'/*********** 导入Excel
SELECT *
FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
'Data Source="c:\test.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...xactions
--从SQL数据库中,导出数据到Excel,如果Excel文件已经存在,而且已经按照要接收的数据创建好表头,就可以简单的用:
insert into OPENROWSET('MICROSOFT.JET.OLEDB.4.0'
,'Excel 5.0;HDR=YES;DATABASE=c:\test.xls',sheet1$)
select * from 表
--如果Excel文件不存在,也可以用BCP来导成类Excel的文件,注意大小写:
--导出表的情况
EXEC master..xp_cmdshell 'bcp 数据库名.dbo.表名 out "c:\test.xls" /c /S"服务器名" /U"用户名" -P"密码"'--导出查询的情况
EXEC master..xp_cmdshell 'bcp "SELECT au_fname, au_lname FROM pubs..authors ORDER BY au_lname" queryout "c:\test.xls" /c /S"服务器名" /U"用户名" -P"密码"'
/*--说明:
c:\test.xls 为导入/导出的Excel文件名.
sheet1$ 为Excel文件的工作表名,一般要加上$才能正常使用.
--*/