1:在把文本文件存到d:\abc.txt
2: 测试:
use master
if object_id('t1') is not null
drop table t1
go
create table t1(a varchar(20),b varchar(20),c int,d varchar(20),e varchar(20),f numeric(10,4),g varchar(20))
go
EXEC master..xp_cmdshell 'bcp master..t1 in d:\abc.txt -c -t ,'
go
select * from t1
2: 测试:
use master
if object_id('t1') is not null
drop table t1
go
create table t1(a varchar(20),b varchar(20),c int,d varchar(20),e varchar(20),f numeric(10,4),g varchar(20))
go
EXEC master..xp_cmdshell 'bcp master..t1 in d:\abc.txt -c -t ,'
go
select * from t1
解决方案 »
- Must declare the variable '@SerID'
- EXEC Up_tree_manage_Add 0,'人大校区','人民大学校区','admin','xiaoqu[_]manage'
- sqlserver显示汉字问题
- where条件中二选一怎么写
- 雷击了。。。帮帮俺
- 局域网中一台机器运行SQL Server,另一台机器VB编程调试,老有错误,高手来看看
- 如何判断ado的connection与数据库的连接已经断开?
- 如何发布sql server2000,也就是初始化问题
- 最近遇到的SQL Server数据库及SQL语句问题,分全给了,稍后再补!
- 请教mssql server 存储过程参数的 OUT 和 OUTPUT 选项的区别。
- 新手,如何建立以下触发器
- SQL SERV OLAP设计紧急求助(维度设计)
http://expert.csdn.net/Expert/topic/2341/2341997.xml?temp=.2739221
SQL语句导入导出大全
主 题: 交流--数据库中存/取文件
c:\data.tbl文本内数据如下,该文件要在SQL server服务器上的C:\下:
1, 11
2, 22
3, 33create table #tablename(a int,b int)
BULK INSERT #tablename
FROM 'c:\data.tbl'
WITH
(
FIELDTERMINATOR = ',',
ROWTERMINATOR = '\n'
) --定义字段分割字符和行中断符号
select * from #tablename
drop table #tablename
在某些情况下,数据文件包含的字段数可能少于表中的列数。例如,New_auth.dat 数据文件(ASCII 格式,即字符格式)不包含与 authors2 表中 address 和 zip 列匹配的字段。New_auth.dat 文件的内容如下:777-77-7777,Smith,Chris,303 555-1213,Denver,CO,1
888-88-8888,Doe,John,206 555-1214,Seattle,WA,0
999-99-9999,Door,Jane,406 555-1234,Bozeman,MT,1若要将数据有选择地大容量复制到 authors2 的适当列中,请使用以下命令创建默认的格式文件(Authors.fmt):bcp pubs..authors2 out c:\authors.txt -Sservername -Usa -Ppasswordbcp 实用工具将提示输入 authors2 中每一列的文件存储类型、前缀长度、字段长度和字段终止符。每列的字段终止符均应为逗号 (,),但 contract 列除外,该列应使用行终止符 \n(换行符),因为该列是行中的最后一列。另外,因为该数据文件为 ASCII 文件,所以 contract 列的文件存储类型是 char。address 和 zip 列不应有字段终止符,并且应将其字段长度设置为 0。在提示输入格式文件名时,请指定 Authors.fmt。Authors.fmt 文件的内容如下:8.0
9
1 SQLCHAR 0 11 "," 1 au_id SQL_Latin1_General_Cp437_BIN
2 SQLCHAR 0 40 "," 2 au_lname SQL_Latin1_General_Cp437_BIN
3 SQLCHAR 0 20 "," 3 au_fname SQL_Latin1_General_Cp437_BIN
4 SQLCHAR 0 12 "," 4 phone SQL_Latin1_General_Cp437_BIN
5 SQLCHAR 0 0 "" 5 address SQL_Latin1_General_Cp437_BIN
6 SQLCHAR 0 20 "," 6 city SQL_Latin1_General_Cp437_BIN
7 SQLCHAR 0 2 "," 7 state SQL_Latin1_General_Cp437_BIN
8 SQLCHAR 0 0 "" 8 zip SQL_Latin1_General_Cp437_BIN
9 SQLCHAR 0 1 "\r\n" 9 contract SQL_Latin1_General_Cp437_BIN该格式文件包含将数据从数据文件大容量复制到 Microsoft® SQL Server™ 表所需的全部信息。address 和 zip 的前缀长度为 0、字段长度为 0 且没有字段终止符,这表明数据文件中不存在这两列。但是,必须使用文本编辑器进一步修改格式文件,以确保不会将任何数据装载到 address 和 zip 中。这两列的服务器列号(格式文件中的第六个字段)应为 0:8.0
9
1 SQLCHAR 0 11 "," 1 au_id SQL_Latin1_General_Cp437_BIN
2 SQLCHAR 0 40 "," 2 au_lname SQL_Latin1_General_Cp437_BIN
3 SQLCHAR 0 20 "," 3 au_fname SQL_Latin1_General_Cp437_BIN
4 SQLCHAR 0 12 "," 4 phone SQL_Latin1_General_Cp437_BIN
5 SQLCHAR 0 0 "" 0 address SQL_Latin1_General_Cp437_BIN
6 SQLCHAR 0 20 "," 6 city SQL_Latin1_General_Cp437_BIN
7 SQLCHAR 0 2 "," 7 state SQL_Latin1_General_Cp437_BIN
8 SQLCHAR 0 0 "" 0 zip SQL_Latin1_General_Cp437_BIN
9 SQLCHAR 0 1 "\r\n" 9 contract SQL_Latin1_General_Cp437_BIN现在若要将该数据文件中的数据大容量复制到 authors2 中,可以使用以下命令:bcp pubs..authors2 in c:\new_auth.dat -fc:\authors.fmt -Sservername -Usa -Ppassword另外,也可以在 SQL 查询分析器这样的查询工具中使用 BULK INSERT 语句来大容量复制数据:BULK INSERT pubs..authors2 FROM 'c:\new_auth.dat'
WITH (FORMATFILE = 'c:\authors.fmt')说明 因为数据文件中没有 address 和 zip 列,所以如果没有定义 DEFAULT 值,则 SQL Server 表中的这两列将包含 NULL。因此,authors2 必须允许这两列中包含空值。
OPENROWSET('MICROSOFT.JET.OLEDB.4.0'
,'Text;HDR=NO;DATABASE=C:\' --c:\是文本文件的存放目录
,aaaa#txt) --aaaa#txt是文本文件名aa.txt
F1 F2 F3 F4 F5 F6 F7
-------- ---------- ----------- -------- ---------- ------------------ ----
0025001A 5301-0005 1 20040103 JAV-5301C1 2560.0 PCS
4053018A 5301-0322 1 20040104 JAV-5301C1 6144.0 PCS
4053018B 5301-0322 1 20040105 JAV-5301C1 5258.0 PCS
4065018B 5301-0323 1 20040106 JAV-5301C1 5632.0 PCS
4077018A 5301-0323 1 20040107 JAV-5301C1 6656.0 PCS(所影响的行数为 5 行)
--查询
select F1=cast(f1 as char(8))
,F2=cast(f2 as char(10))
,F3=cast(f3 as int)
,F4=cast(f4 as char(8))
,F5=cast(f5 as char(10))
,F6=cast(f6 as money)
,F7=cast(f7 as char(3))
from
OPENROWSET('MICROSOFT.JET.OLEDB.4.0'
,'Text;HDR=NO;DATABASE=C:\' --c:\是目录
,aaaa#txt) --aa#txt是文本文件名aa.txt/*--测试结果
F1 F2 F3 F4 F5 F6 F7
-------- ---------- ----------- -------- ---------- --------------------- ----
0025001A 5301-0005 1 20040103 JAV-5301C1 2560.0000 PCS
4053018A 5301-0322 1 20040104 JAV-5301C1 6144.0000 PCS
4053018B 5301-0322 1 20040105 JAV-5301C1 5258.0000 PCS
4065018B 5301-0323 1 20040106 JAV-5301C1 5632.0000 PCS
4077018A 5301-0323 1 20040107 JAV-5301C1 6656.0000 PCS(所影响的行数为 5 行)--*/
OPENROWSET('MICROSOFT.JET.OLEDB.4.0'
,'Text;HDR=NO;DATABASE=C:\' --c:\是文本文件的存放目录
,aaaa#txt)
的结果只有一列?F1
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
0025001A 5301-0005 1 20040103 JAV-5301C1 2560.0 PCS
4053018A 5301-0322 1 20040104 JAV-5301C1 6144.0 PCS
4053018B 5301-0322 1 20040105 JAV-5301C1 5258.0 PCS
4065018B 5301-0323 1 20040106 JAV-5301C1 5632.0 PCS
4077018A 5301-0323 1 20040107 JAV-5301C1 6656.0 PCS(5 row(s) affected)
老大, opendatasource( provider_name, init_string )中init_string你是如何得来的格式,能告诉小弟吗? 真乃神人也!!!
望 赐教! Thanks a lot!
-------
如有误,请指正,Thanks ;
init_string是根据以前ACCESS数据库中处理的一些经验加测试得到的.