Как изменить тип столбца в Apex 20.1 с varchar на float? - PullRequest
0 голосов
/ 12 апреля 2020

Я импортировал электронную таблицу Excel в Apex 20.1. Некоторые из моих столбцов были отформатированы как валюта, например. 30 долларов, но все они были импортированы как varchar. Многие ячейки были пустыми, поэтому, возможно, именно поэтому он не распознал тип столбца автоматически.

Похоже, не было способа изменить определение таблицы до того, как она загрузила данные.

Чтобы изменить его обратно на тип числительного c (? Float), нужно ли добавить еще один столбец, импортировать данные из исходного столбца, преобразованного как float, удалить первый столбец и затем переименовать новый столбец обратно в оригинальное имя?

Я также хочу урезать некоторые varchar (4000) до varchar (100), но это другой вопрос.

1 Ответ

1 голос
/ 12 апреля 2020

Если столбец выглядел в точности как $30, то да - это строка, а не число, поэтому Oracle создал столбец VARCHAR2. Если бы вы удалили форматирование в Excel до того, как сделали что-нибудь с Apex, это было бы NUMBER.

Теперь да, как вы сказали:

  • создать новый столбец
  • обновить таблицу и установить новый столбец в цифру c значение старого столбца
  • удалить старый столбец
  • переименовать новый столбец в "старый / original "name

Или, альтернативно (из пункта № 3)

  • очистить старый столбец
  • изменить его тип данных
  • move данные обратно в него
  • перетащить новый столбец

Начиная с усечения varchar2(4000) столбца до (100): сначала сократите его содержимое до 100 символов, затем измените его тип данных :

update your_table set that_column = substr(that_column, 1, 100);
alter your_table modify that_column varchar2(100);

Из-за таких проблем я предпочитаю

  • предварительно создать целевую таблицу (с помощью команды create table), указав тип данных каждого столбца так, как я этого хочу
  • загрузить содержимое файла в такую ​​таблицу
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...