Согласно документации W3 :
При получении, если используется метод чтения readAsDataURL (), атрибут результата должен возвращать строку DOMString, которая является URL-адресом данных [RFC2397 ] кодирование файла или данных BLOB-объекта.
blockquote>Таким образом, ваш
reader.result
имеет значение null или DOMString. DOMString - это строка с 16-битными символами.Итак, чтобы проверить размер, вы должны:
Проверить, является ли
[114 ]reader.result
нулевым, если оно есть, затем выдать ошибку или отклонить обещаниеПроверьте длину вашей строки, зная, что каждый символ равен 2 байта
Бросьте ошибку, если длина * 2 больше 2 ^ 20, на самом деле 2 * 2 ^ 20 - это количество байтов в 2 МБ
Теперь давайте переведем его в код:
ReadAsBase64(file): Promise
{ const reader = new FileReader(); const fileValue = new Promise((resolve, reject) => { reader.addEventListener('load', () => { const result = reader.result as DOMString; if (!result) reject('Cannot read variable'); if (result.length * 2 > 2**21) reject('File exceeds the maximum size'); // Note: 2*2**20 = 2**21 resolve(reader.result); }); reader.addEventListener('error', event => { reject(event); }); reader.readAsDataURL(file); }); return fileValue; }
Using SQL Server Integration Services (SSIS) вероятна Ваш лучший выбор. Если Вы не знакомы с SSIS, лучший способ испытать что-то состоит в том, чтобы использовать Мастер Экспорта SQL Server и иметь его, создают пакет SSIS для Вас. Например, если Вы входите в Studio управления SQL Server и щелкаете правой кнопкой по Вашей базе данных, затем избранные Задачи-> Данные Экспорта. Оттуда нажмите затем, пока Вы не добираетесь до, "Выбирают Целевой" шаг. Выберите "Microsoft OLE DB Provider для Oracle" и нажмите Properties для определения соединения с базой данных. Когда Вы нажимаете через мастер на странице Save и Execute, удостоверьтесь, что Вы проверяете, что флажок маркировал "Save SSIS Package", на следующем экране указывают, где сохранить пакет SSIS. После того как Вы заканчиваете Мастер Экспорта, Ваши данные будут экспортированы, и у Вас будет пакет SSIS, который можно использовать как есть, или войти и настроить его, чтобы сделать более определенные вещи. После того как у Вас есть свой пакет SSIS, можно запланировать его путем создания Задания SQL Server Agent.
Планирование:
Создайте ссылку базы данных с Oracle на SQL-сервер (неоднородная возможность соединения). Можно использовать эту ссылку для получения данных из SQL-сервера с простым избранным оператором. Если Вы хотите запланировать Вас, может использовать осуществленное представление или dbms_scheduler.
Альтернатива должна поместить Ваши данные в файл CSV, можно использовать внешнюю таблицу или sqlloader для загрузки этих данных в базе данных Oracle.
У Вас может быть интерфейс SQL Server с Oracle непосредственно через SSIS (или DTS для 2k). Это обеспечит функциональность ETL и может быть запланировано регулярно.
Я имел успех, создающий связанный сервер (из Руководителя предприятия, я думаю) к Oracle на стороне SQL Server. Затем я мог использовать нормальные хранимые процедуры с обеих сторон для выполнения меньшего перемещения данных и обновлений в обоих направлениях. Этот подход может обойти потребность попытаться соединить что-то вне баз данных.
Очень старайтесь использовать последний клиент Oracle на стороне SQL Server все же. Я вспоминаю некоторые дефекты в 10.2.0.2 клиентах, и получение 10.2.0.4 клиентов потребовало Вашего "официального" числа регистрации или покупки Oracle или чего-то.
Для перемещений больших данных (или возможно даже перемещается/обновляет, Вы хотите сделанный на ежедневной или менее частой основе), определенно используйте один из инструментов ETL. У нас был Informatica для наших процессов ETL, но если SSIS может осуществить то, в чем Вы нуждаетесь, это прекрасно также.