Выбор из таблицы и вставка в столбец другой таблицы другого типа с использованием запроса в ms доступ - PullRequest
3 голосов
/ 02 июля 2010

У меня есть несколько текстовых файлов, которые содержат таблицы с различными записями, которые имеют разные типы значений и определений для столбцов.Я думал о том, чтобы импортировать его в таблицу и выполнить запрос для разделения разных типов записей, так как идентификатор этого указан в первом столбце.Есть ли способ изменить тип значения столбца в запросе?так как будет болезненно относиться ко всем из них как к тексту.Если у вас есть какие-либо другие предложения о том, как решить эту проблему, пожалуйста, дайте мне знать.

Вот пример таблиц для двух типов записей, предоставленных веб-сайтом, где я получил данные от

create table dbo.PUBACC_A2
(
      Record_Type               char(2)              null,
      unique_system_identifier  numeric(9,0)         not null,
      ULS_File_Number           char(14)             null,
      EBF_Number                varchar(30)          null,
      spectrum_manager_leasing  char(1)              null,
      defacto_transfer_leasing  char(1)              null,
      new_spectrum_leasing      char(1)              null,
      spectrum_subleasing       char(1)              null,
      xfer_control_lessee       char(1)              null,
      revision_spectrum_lease   char(1)              null,
      assignment_spectrum_lease char(1)              null,
      pfr_status        char(1)          null

)

go
create table dbo.PUBACC_AC
(
      record_type               char(2)              null,
      unique_system_identifier  numeric(9,0)         not null,
      uls_file_number           char(14)             null,
      ebf_number                varchar(30)          null,
      call_sign                 char(10)             null,
      aircraft_count            int                  null,
      type_of_carrier           char(1)              null,
      portable_indicator        char(1)              null,
      fleet_indicator           char(1)              null,
      n_number                  char(10)             null
)

Ответы [ 3 ]

1 голос
/ 02 июля 2010

Да, вы можете делать то, что вы хотите. В MS Access вы можете использовать любые функции VBA и некоторые

IIF(FirstColumn="value1", CDate(SecondColumn), NULL) as DateValue,
IIF(FirstColumn="value2", CDec(SecondColumn), NULL) as DecimalValue,
IIF(FirstColumn="value3", CStr(SecondColumn), NULL) as StringValue

Вы можете использовать все / любое из вышеперечисленного в вашем SELECT.

EDIT:

Из ваших комментариев кажется, что вы хотите разделить их на разные таблицы - в этом случае импорт в виде текста не должен быть проблемой.

а) После того, как вы импортируете и получите его в исходной таблице, создайте правильную таблицу, вручную установив, что вы можете ВСТАВИТЬ в соответствующую таблицу.

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

EDIT2: По мере того, как вы обновляете вопрос, показывающий структуру, становится очевидным, что мое предложение выше не поможет напрямую.

Если это однократный процесс, вы можете следовать решению HLGEM. Вот еще некоторые подробности.

1) Импорт в таблицу с двумя столбцами - RecordType char (2), Памятка отдыха

2) Теперь вы можете разделить данные (сделать два запроса, которые выбираются на основе RecordType) и повторно экспортировать данные (чтобы иметь возможность использовать доступ к мастеру импорта)

3) Теперь у вас есть два текстовых файла с правильной структурой, которые можно легко импортировать

1 голос
/ 02 июля 2010

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

0 голосов
/ 02 июля 2010

Если у вас есть столбец, определенный как текст, поскольку в нем есть как альфа, так и цифры, вы сможете запрашивать его только как текст.После того, как вы разделили разные «типы» данных в их собственные таблицы, вы сможете изменить определение схемы.Пожалуйста, прокомментируйте здесь, если я неправильно понимаю, что вы пытаетесь сделать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...