Как я могу импортировать данные в SQL из CSV или XLS, автоматически увеличивая строковое поле на основе текущих записей в БД? - PullRequest
0 голосов
/ 16 апреля 2009

Мне нужно импортировать данные из Excel в базу данных SQL 2000.

Мне нужно импортировать 6 полей из листа и увеличить строковое поле, содержащее целое число с добавлением 5 символов с начальными нулями. Это поле не является первичным ключом, и БД не заполняет его автоматически. Кроме того, DB будет позволять вводить это поле как NULL, если это поможет, и затем изменять, если это поможет.

Я могу получить данные в нужную мне таблицу, используя комбинацию новобранца DTS и вставить статистику, и вручную обновить строковое поле для 20 записей, которые я должен сделать сегодня, но на следующей неделе мне нужно импортировать около 1000 записей.

Должен ли я написать приложение C # / ADO.net для этого, [имея в виду, что я новичок, так что это займет у меня пару дней :-)] или есть способ увеличить строку поле с использованием DTS напрямую или какой-то цикл в инструкции вставки?

Заранее спасибо G

РЕДАКТИРОВАНИЕ: Таблица, в которую я вставляю, построена, как показано ниже, и мне нужно обновить "cedeviceid", "vanwarehouse", "username", "devicesimnumber", "UserGroup" и "ServiceMgr" , из листа Excel. «код отправителя» - это строка, которую мне нужно увеличить

CREATE TABLE [dbo]. [Mw_gsmprofile] (
[cedeviceid] varchar NOT NULL,
[mainwarehouse] varchar NULL,
[vanwarehouse] varchar NULL,
[имя пользователя] 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,
CONSTRAINT [PK_mw_gsmprofile] ПЕРВИЧНЫЙ КЛЮЧ КЛАСТЕРНЫЙ
(
[cedeviceid] ASC
) С (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [ПЕРВИЧНЫЙ]
) НА [ПЕРВИЧНО]

ОБРАЗЦЫ ДАННЫХ

cedeviceid, vanwarehouse, имя пользователя, deviceimnumber, UserGroup, ServiceMgr
3431, 999, УСТАНОВИТЬ КОМАНДУ 1, УСТАНОВИТЬ, AHOA
3441, 999, INSTALL TEAM 2, INSTAL, AHOA
3451, 999, УСТАНОВИТЬ КОМАНДУ 3, УСТАНОВИТЬ, AHOA
3461, 999, УСТАНОВИТЬ КОМАНДУ 4, УСТАНОВИТЬ, AHOA
3471, 999, INSTALL TEAM 5, INSTAL, AHOA
3472, 999, INSTALL TEAM 6, INSTAL, AHOA

Ответы [ 3 ]

2 голосов
/ 16 апреля 2009

Здесь есть несколько трубочек, но мой собственный инструмент FOSS CSVfix может сделать это без написания какого-либо кода, используя (необъяснимо) необъясненный sequence 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 - начальный номер.

Теперь, чтобы узнать, как это было опущено в файле справки ....

1 голос
/ 16 апреля 2009

Я бы сделал это с небольшим приложением. Вы должны получить первый элемент таблицы, отсортированный в обратном порядке (это даст вам максимальное значение идентификатора). Зная максимальное значение, вы можете очень легко увеличить его с помощью выразительности языка программирования.

0 голосов
/ 16 апреля 2009
  1. Получить начальное значение из базы данных
  2. Перебирать импортированные записи, вставляя их по одной в базу данных. Используйте переменную счетчика для увеличения поля. Используйте перегрузку tostring ("00000") для заполнения номера.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...