一个想了半天的数据导入问题,大家教教我

kekan 2007-04-27 09:29:52
数据库内有表A,包括aaa、bbb、ccc、ddd四个字段,aaa为主键。现有一数据源B(TXT格式)想导入表A,B内包含有aaa和bbb字段,且A、B间aaa部分值重复。
导入要求:若A中不存在B中aaa的值,则添加记录,记录的ccc、ddd为空;
若A中存在aaa的值,则只更新该记录的bbb字段,但如果bbb为NULL,则bbb也保持不变。
...全文
265 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
kekan 2007-04-28
  • 打赏
  • 举报
回复
小顶下
beijixing9 2007-04-27
  • 打赏
  • 举报
回复
这个问题...
确实是你想怎么玩就怎么玩

要是数据量大,或者情况很复杂的话,
还是推荐使用IS2005
chenxdb 2007-04-27
  • 打赏
  • 举报
回复
建一臨時表,用于存放txt的導入數據,再通過sql語句把要的數據取出來導入到各個表中就可以了。
個人感覺,只要數據進入了數據庫中,你想怎麼玩都可以。
jyxhz 2007-04-27
  • 打赏
  • 举报
回复
先将TXT文件导入表B

update T_a set aaa=T_b.aaa,bbb=T_b.bbb where aaa in (select aaa from T_b where bbb is not null)
insert into T_a(aaa,bbb) select(aaa,bbb) from T_b where aaa not in (select aaa from T_a)
hrb2008 2007-04-27
  • 打赏
  • 举报
回复
若A中存在aaa的值,则只更新该记录的bbb字段,但如果bbb为NULL,则bbb也保持不变。
update a set a.bbb=c.bbb from a,c where a.aaa=c.aaa and c.bbb not is null
hrb2008 2007-04-27
  • 打赏
  • 举报
回复
建一表c
create table c
(
aaa varchar(20),
bbb varchar(30)
)
将b中数据导入c表。
更新表a中重复aaa的bbb字段
update a set a.bbb=c.bbb from a,c where a.aaa=c.aaa
插入表a中不重复的值
insert into a select aaa,bbb,null,null from c where not exists(select 1 from a where a.aaa=c.aaa)
rookie_one 2007-04-27
  • 打赏
  • 举报
回复
在A上创建INSTEAD OF触发器试试看:

create trigger tri_insert on A
instead of insert
as
if not exists(select a.* from A,B where A.aaa=B.aaa)
begin
insert A(aaa,bbb)
select aaa,bbb from B
end
else
begin
update A set bbb=B.bbb from B where A.aaa=B.aaa
end
go
kekan 2007-04-27
  • 打赏
  • 举报
回复
若A中存在aaa的值,则只更新该记录的bbb字段,但如果bbb为NULL,则bbb也保持不变。
update a set a.bbb=c.bbb from a,c where a.aaa=c.aaa and c.bbb not is null


但如果这里不只2个字段,还有eee、fff、ggg等等,当这些字段某些为空时,我不想更新,只想更新非空的值呢?
本人使用9930将近50天,手机刚买来是 OS7.1.0.163的rom,感觉掉电严重太快,基本是半天就要充电,所以我都是随身携带充电器,看到插座就往上插,之后天天晚上看看论坛,发现有很多人说刷新版rom可以解决用电问题,我就开始找帖子看,看了三四个晚上,发现论坛写9930刷机的帖子少,而且不完整,不仔细,太过简洁,不适合新手,我这个帖子就是专门一步一步的教新手刷机,如果看完我的帖子还是不会刷,那么我觉得你已经笨到一定境界了。老鸟可以无视我的帖子。 详细刷机过程 ,回复可见,我只是觉得自己写的很认真,希望能给大家带来帮助。不帖子被埋没。才设置回复可见。。【【【一】】】下面我来说一下刷机步骤: 一。 安装桌面管理器 (安装位置就选择默认吧,如果有的朋友安装完忘记自己安装在哪了,可以右击桌面上的“BlackBerry Desktop Software”查看属性就能看到具体位置) “黑莓桌面管理器 Desktop Manager v7.1.0.31 ”下载地址《http://115.com/file/e71pa3eg# 710-b032-multilanguage.exe》 “黑莓桌面管理器 6.0 多国语言版 ” 下载地址《http://download.pchome.net/home/mobile/general/detail-173650.html》 随便装哪个,看个人喜好,无所谓的事。 二。 安装好桌面管理器了,就把手机连电脑,选择“usb驱动模式”,打开桌面管理器,备份《如果自己感觉手机里没啥重要的就别备份了》,备份完毕 后可以把手机与数据线拔开 三。 安装你下载好的rom,这里我推荐两个9930的rom。 一 ,“OS7.1.0.267泄露版” (优点:是9930最省电的rom。缺点:1,信号不好 2,触摸屏幕灵敏度不好 3,没中文输入法 《这些都是我把论坛用过267rom的意 见总结起来,并不是我亲自测试的,朋友们别喷我,自己可以刷了试试,》) rom下载地址《http://115.com/file/belipcwq》 二,“OS7.1.0.402全语言测试版” (挂着qq,偶尔聊聊天,五六条短信,三个小时掉15%的电量,百分之百有中文输入 和中文显示。由于刚刚刷 ,所以只测试了电量 消耗情况。原本用的163的rom掉电速度绝对是402的两三倍。!!本人亲测!!!!) rom下载地址《http://115.com/file/dpna754d》 四。 进去我的电脑"C:\Program Files\Common Files\Research In Motion\AppLoader”目录,找到Vendor.xml文件,将其删除。 五。 安装“BerryBox” 下载地址《 http://www.cr173.com/soft/27672.html》 等“BerryBox”安装好了,再次将手机与电脑连接,打开“BerryBox”,左击“刷新设备”,然后左击“连接设备”,然后左击“系统工具”,找到“WIPE手机”那一栏,在“-a 和-f”前面勾上,然后左击“WIPE”。 然后手机会显示507,然后把手机与数据线拔开,然在在插上《具体为什么拔开插上我也不知道,跟人家学的,您也可以选择不拔开》    六。 打开我的电脑"C:\Program Files\Common Files\Research In Motion\AppLoader”目录,找到“Loader”《图标看起来跟一个手机差不多》,双击它!   按照个人要求进行选择安装,语言那一块 ,上面只有英语 法语等等。。别急。。往下拉。。中午输入 中文显示 在几乎最下面,仔细看。设置好点“确定”  七。 等到电脑上显示 完成了,就可以拔开数据线。等待手机启动《手机启动时间非常漫长,别急》。手机开机了 都是英语,别怕,自己到设置语言的地方去跟换!别告诉我不知道在哪设置!!那刷机前记记清楚!!! 八。刷机完毕,连接桌面管理器 ,导入sb ,这个别忘了!然后就 OK了。。。。。 【【【二】】】关于黑莓9930有争议的几点《写号的朋友别看了》: 1.谷歌地图,有人说插移动卡能使用,有人说插联通3G 186号段的卡能用《也有说不能用的》,我插150 和156是不能用,我尝试过N种方法就是不能用的。我觉得这跟号码无关。这可能跟买的手机有关,或者跟你载入的sb文件的方式,顺序有关,我只是猜测。。期待大家去研究下,群众的力量才大。 2.9930导入sb到底走net还是wap? 我敢肯定的说 两个都可以走,所谓的net,你家里用的电脑 上网显示的网页都是 net。我的9930 自带浏览器上 淘宝。还有各种游戏的官网 都是跟电脑一模一样的。所以 肯定能走net。。

34,575

社区成员

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

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