У меня есть проект, в котором я использую скрипты Python для сбора данных из различных API (Google Analytics, Facebook, Instagram и т. Д.). Я пишу собранные данные в плоский файл, а затем использую SSIS для извлечения данных из файла, выполнения некоторых работ ETL, а затем вставки в наш хранилище данных.Вставка строк Unicode в SSIS из плоского файла
Проблема, с которой я столкнулась, имеет значения в Unicode, похоже, что они не могут быть закодированы/декодированы правильно, а другой символ вставляется в базу данных, чем то, что на самом деле. Вот процесс вовлекаются:
закодировать значение данных и запись в файл, используя модуль CSV:
import csv
with open('{0}{1}.txt'.format(file_path, file_name), 'ab+') as f:
writer = csv.writer(f, delimiter='\t')
try:
writer.writerow(data['name'].encode('utf-8'))
except Exception, ex:
logging.exception(ex)
Когда я открываю файл в текстовом редакторе, например Sublime Text, все символы Юникода отображается правильно.
Как только все данные будут записаны в файл, я начну собирать его с помощью SSIS. В SSIS у меня есть задача с плоским файловым источником, которая извлекает данные. Я определил тип данных для столбца «name» в диспетчере подключений как DT_WSTR (Length 4000)
. Кодовая страница для подключения плоского файла - 65001 (UTF-8)
.
База данных назначения, которую я пишу, представляет собой базу данных SQL Azure с сортировкой SQL_Latin1_General_CP1_CI_AS
. Столбец базы данных назначения определяется как nvarchar(max)
. Если я попытаюсь записать в обычную базу данных SQL Server с одинаковой сортировкой, результат будет таким же.
Что я здесь делаю неправильно? Есть много символов типа emoji, которые я собираю и не заботясь о том, что важно, это акцентированные и неанглийские символы. Если мне нужно предоставить более подробную информацию или что-то еще, сообщите мне.
может пожалуйста, дайте содержание выборки 'данных [«имя»] ', так как это немного трудно воспроизвести этот вопрос на моей стороне –
Sure вещь, вот пример через различные этапы ETL. В плоском файле это выглядит как Катерина Александровна.Когда я включаю средство просмотра данных после файла Flat File Source и в базе данных, он выглядит как šÐ ° Ñ, ÐμÑ € ÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐ. – LifeofaBit
Еще несколько примеров (с разделителями с запятой): Witt ™; Хорхе; Ňess Źéro Ýou – LifeofaBit