0

我需要将数据从 Excel 导入 SQL 2000 db。

我需要从工作表中导入 6 个字段,并增加一个字符串字段,其中包含一个填充为 5 个前导零字符的整数。该字段不是主键,数据库不会自动填充它。此外,如果有帮助,数据库允许将此字段输入为 NULL,然后在有帮助时更改。

我可以使用菜鸟 DTS 和插入语句的组合将数据放入我需要的表中,并手动更新我今天必须做的 20 条记录的字符串字段,但下周我需要导入大约 1000 条记录。

我是否应该编写一个 C#/ADO.net 应用程序来执行此操作,[请记住我是新手,所以这需要我几天时间 :-) ] 还是有一种方法可以使用 DTS 增加字符串字段直接或插入语句中的某种循环?

在此先感谢 G

编辑:我插入的表构造如下,我需要更新“cedeviceid”、“vanwarehouse”、“username”、“devicesimnumber”、“UserGroup”和“ServiceMgr”。从 Excel 表。“sendercode”是我需要增加的字符串

CREATE TABLE [dbo].[mw_gsmprofile](
[cedeviceid] varchar NOT NULL,
[mainwarehouse] varchar NULL,
[vanwarehouse] varchar NULL,
[username] varchar NULL,
[sendercode] varchar NULL,
[devicesimnumber] varchar NULL,
[usersupportgsm] [int] NULL,
[userisonline] [int] NULL,
[onlinedate] varchar NULL,
[lastsentsequenceno] [int] NULL,
[lastsentdate] varchar NULL,
[lastreceivedsequenceno] [int] NULL,
[lastreceiveddate] varchar NULL,
[EnableAutoDownloading] [int] NULL,
[EnableCompressFile] [int] NULL,
[LogonUserName] varchar NULL,
[LogonPassword] varchar NULL,
[LogonDomain] varchar NULL,
[UserGroup] varchar NULL,
[UseStorageCard] [int] NULL,
[SMSMapProfile] varchar NULL,
[SMPPClientFlag] [int] NULL,
[LASTUPDATE] varchar NULL,
[ServiceMgr] varchar NULL,
[VanLocation] varchar NULL,
[OnHireWarehouse] varchar NULL,
[OnHireWhsRepType] [int] NULL,
[HireDepotWarehouse] varchar NULL,
[HireDepotWhsRepType] [int] NULL,
约束 [PK_mw_gsmprofile] 主键集群

[cedeviceid] ASC
)WITH(PAD_INDEX = OFF,STATISTICS_NORECOMPUTE = OFF,IGNORE_DUP_KEY = OFF,ALLOW_ROW_LOCKS = ON,ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

样本数据

cedeviceid,vanwarehouse, username, devicesimnumber, UserGroup, ServiceMgr
3431, 999, INSTALL TEAM 1,,INSTAL, AHOA
3441, 999, INSTALL TEAM 2,,INSTAL, AHOA
3451, 999, INSTALL TEAM 3,,INSTAL, AHOA
3461, 999 , 安装团队 4,,安装, AHOA
3471, 999, 安装团队 5,,安装, AHOA
3472, 999, 安装团队 6,,安装, AHOA

4

3 回答 3

2

一些自己的小号在这里吹响,但我自己的 FOSS 工具CSVfix可以在不编写任何代码的情况下使用(莫名其妙的)未记录序列commanbd 来做到这一点。例如,给定一个 CSV 文件:

foo,bar
one,two
three,four

然后:

csvfix sequence -n 42 -p 5 afile.csv

将产生输出:

00042, foo, bar
00043, one, two
00044, three,four

-p 选项指定填充,-n 选项指定起始编号。

现在找出它是如何从帮助文件中省略的......

于 2009-04-16T09:09:50.760 回答
1

我会用一个小应用程序来做到这一点。您必须获取表格的第一项,以相反的顺序排序(这将为您提供 id 的最大值)。在知道最大值之后,您可以使用编程语言的表现力非常轻松地增加它。

于 2009-04-16T08:38:15.123 回答
0
  1. 从数据库中获取起始值
  2. 遍历导入的记录,一次将它们插入到数据库中。使用计数器变量来增加字段。使用 tostring("00000") 重载来填充数字。
于 2009-04-16T08:47:19.893 回答