Как распечатать на stderr в Python?

Я нашел более быстрый и простой способ выполнить это.

Сначала скопируйте таблицу (или запрос) в файл с разделителями табуляции следующим образом:

COPY (SELECT siteid, searchdist, listtype, list, sitename, county, street, 
   city, state, zip, georesult, elevation, lat, lng, wkt, unlocated_bool, 
   id, status, standard_status, date_opened_or_reported, date_closed, 
   notes, list_type_description FROM mlocal) TO 'c:\SQLAzureImportFiles\data_script_mlocal.tsv' NULL E''

Затем вы нужно создать таблицу в SQL, это не будет обрабатывать никакую схему для вас. Схема должна соответствовать вашему экспортированному файлу TSV в полевом порядке и типах данных.

Наконец, вы запускаете утилиту SQL bcp для ввода файла tsv следующим образом:

bcp MyDb.dbo.mlocal in "\\NEWDBSERVER\SQLAzureImportFiles\data_script_mlocal.tsv" -S tcp:YourDBServer.database.windows.net -U YourUserName -P YourPassword -c

Несколько что я столкнулся. Postgres и SQL Server обрабатывают логические поля по-разному. Для вашей схемы SQL Server необходимо, чтобы ваши логические поля были установлены в varchar (1), а полученные данные будут «f», «t» или «null». Затем вам нужно будет немного перевести это поле. что-то вроде:

ALTER TABLE mlocal ADD unlocated bit;
UPDATE mlocal SET unlocated=1 WHERE unlocated_bool='t';
UPDATE mlocal SET unlocated=0 WHERE unlocated_bool='f';
ALTER TABLE mlocal DROP COLUMN unlocated_bool;

Другое дело, что поля географии / геометрии очень разные между двумя платформами. Экспортируйте поля геометрии как WKT с помощью ST_AsText(geo) и соответствующим образом конвертируйте на конец SQL Server.

Может быть больше несовместимостей, требующих таких настроек.

EDIT. Поэтому, когда этот метод технически работает, я пытаюсь передать несколько миллионов записей из 100 + таблиц в SQL Azure и bcp в SQL Azure, это довольно flaky получается. Я продолжаю получать прерывистый Невозможно открыть ошибки BCP host data-file , сервер периодически отключается, и по какой-то причине некоторые записи не передаются без признаков ошибок или проблем. Таким образом, этот метод нестабилен для передачи больших объемов данных Azure SQL.

1164
задан Reblochon Masque 20 April 2019 в 03:05
поделиться

1 ответ

Если Вы хотите выйти из программы из-за фатальной ошибки, используйте:

sys.exit("Your program caused a fatal error. ... description ...")

и import sys в заголовке.

0
ответ дан 19 December 2019 в 20:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: