麻烦各位大侠帮我写下,我要把文本数据导入到数据库,但是我本文只有3个字段,我数据库有7个字段,我怎么把文本字段的对应到数据库,我不想用读文本的方式,数据库的bulk insert 可以实现吗,能字段对应上可以吗,比如我的数据库表(userinfo) id identity,userName,pass,address,phone,email,registerTime
文本格式是
userName,address,phone
hua,湖南,5971898
这个可以用SQL脚本导入吗,我的数据很大,我现在是在程序读文本的方式一行行插入的,速度太慢了,要5,6分钟
文本格式是
userName,address,phone
hua,湖南,5971898
这个可以用SQL脚本导入吗,我的数据很大,我现在是在程序读文本的方式一行行插入的,速度太慢了,要5,6分钟
请参考:
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'
<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="CharTerm" TERMINATOR="," MAX_LENGTH="20" COLLATION="Chinese_PRC_CI_AS"/>
<FIELD ID="2" xsi:type="CharTerm" TERMINATOR="," MAX_LENGTH="100" COLLATION="Chinese_PRC_CI_AS"/>
<FIELD ID="3" xsi:type="CharTerm" TERMINATOR="\r\n" MAX_LENGTH="20" COLLATION="Chinese_PRC_CI_AS"/>
</RECORD>
<ROW>
<COLUMN SOURCE="1" NAME="userName" xsi:type="SQLVARYCHAR"/>
<COLUMN SOURCE="2" NAME="address" xsi:type="SQLVARYCHAR"/>
<COLUMN SOURCE="3" NAME="phone" xsi:type="SQLVARYCHAR"/>
</ROW>
</BCPFORMAT>G:\test.txtuserName,address,phone
hua,湖南,5971898
--SQL SERVER
--创建表
CREATE TABLE userinfo(id INT identity,userName varchar(20),
pass varchar(20),address varchar(100),phone varchar(20),
email varchar(128),registerTime datetime)--导入
INSERT INTO userinfo(userName,address,phone)
SELECT * FROM OPENROWSET(BULK 'G:\test.txt',FORMATFILE='G:\format.xml',FIRSTROW=2) AS T;--查看数据
SELECT * FROM userinfo;/*
id userName pass address phone email registerTime
----------- --------- ---------- ----------- ---------- ---------- -------------
1 hua NULL 湖南 5971898 NULL NULL(1 行受影响)
*/
在关键字 'BULK' 附近有语法错误。
我的是SQL server2000呢,呵呵
多谢了,如果对了我也可以改成2005,重装个数据库也可以,谢谢你了啊
只能用非xml格式化文件.
非xml格式化文件比xml格式化文件的可读性差很多
3
1 SQLCHAR 0 20 "," 2 userName Chinese_PRC_CI_AS
2 SQLCHAR 0 100 "," 4 address Chinese_PRC_CI_AS
3 SQLCHAR 0 20 "\r\n" 5 phone ""G:\test.txtuserName,address,phone
hua,湖南,5971898--SQL SERVER
--建表
CREATE TABLE userinfo(id int identity,userName varchar(20),
pass varchar(20),address varchar(100),phone varchar(20),
email varchar(128),registerTime datetime)--导入
BULK INSERT userinfo
FROM 'G:\test.txt'
WITH
(
FORMATFILE = 'G:\format.fmt',
FIRSTROW = 2
)
--查看数据
SELECT * FROM userinfo;/*
id userName pass address phone email registerTime
----------- --------- ---------- ----------- ---------- ---------- -------------
1 hua NULL 湖南 5971898 NULL NULL(1 行受影响)
*/
3 --这个3.表示数据文件中有几列.
第一列的1,2,3表示数据文件的列的序号
而后面的第六列的2,4,5表示userName,Address,phone在表中.是第几列
1 SQLCHAR 0 20 "," 2 userName Chinese_PRC_CI_AS
2 SQLCHAR 0 100 "," 4 address Chinese_PRC_CI_AS
3 SQLCHAR 0 20 "\r\n" 5 phone ""