Последовательный метод вставки Столбца текста к базе данных Informix с помощью JDBC и ODBC

Приведенный ниже код предназначен для получения только имен файлов с префиксом «NUMBER».

for path, subdirs, files in os.walk(r'C:\\Users\User\Documents'):
   for filename in files:
        if 'NUMBER' in filename:
            f = os.path.join(path, filename)
            print (str(f)[25:35])
5
задан Michał Niklas 27 January 2009 в 13:39
поделиться

1 ответ

Прежде всего Вы действительно уверены, что хотите использовать Тип текста Informix? Тип является неприятностью для использования, частично из-за проблем, с которыми Вы сталкиваетесь. Это предшествует чему-либо в любом стандарте SQL относительно больших объектов (ТЕКСТ все еще не находится в SQL 2003 - хотя приблизительно эквивалентные структуры, CLOB и BLOB). И функциональность БАЙТА и ТЕКСТОВЫХ блобов не была изменена с тех пор - о, скажем, 1996, хотя я подозреваю, существует случай для выбора более ранней даты, как 1991.

В частности, сколько данных Вы планируете хранить в Столбцах текста? Ваш пример показывает, что строка 'вставляет'; то есть, я предполагаю, очень намного меньший, чем Вы действительно использовали бы. Необходимо знать, что БАЙТ или Столбцы текста используют 56-байтовый дескриптор в таблице плюс отдельная страница (или набор страниц), чтобы хранить фактические данные. Так, для крошечных строк как этот это - трата пространства и пропускной способности (потому что данные для БАЙТА или Текстовых объектов будут поставлены между клиентом и сервером отдельно от остальной части строки). Если Ваш размер не доберется выше приблизительно 32 КБ, то необходимо посмотреть на использование LVARCHAR вместо ТЕКСТА. Если Вы будете использовать размеры данных выше этого, то БАЙТ или ТЕКСТ или BLOB или CLOB являются разумными альтернативами, но необходимо посмотреть на конфигурирование или пробелы блоба (для БАЙТА или ТЕКСТ) или умные пробелы блоба (для BLOB или CLOB). Вы можете, и быть, с помощью ТЕКСТА В ТАБЛИЦЕ, а не в пространстве блоба; знайте, что выполнение так влияет на Ваши логические журналы, тогда как использование пространства блоба не влияет на них ничто как так же.

Одной из функций, я проводил кампанию в течение приблизительно одного десятилетия, является способность передать строковые литералы в SQL-операторах как ТЕКСТОВЫЕ литералы (или литералы БАЙТА). Это частично из-за опыта людей как Вы. Я еще не был успешен в получении, оно расположило по приоритетам перед другими изменениями, которые должны быть внесены. Конечно, необходимо знать, что максимальный размер SQL-оператора является текстом на 64 КБ, таким образом, Вы могли создать слишком большой SQL-оператор, если Вы не осторожны; заполнители (вопросительные знаки) в SQL обычно предотвращают тот являющийся проблемой - и увеличивающий размер SQL-оператора другой запрос новых функций, который я проводил кампанию за, но немного менее пылко.

Хорошо, предположение, что у Вас есть веские причины для использования ТЕКСТА... что затем. Я не ясен, кроме чего Java (драйвер JDBC) делает негласно - слишком много - но это - ставка ярмарки, что он замечает, что ТЕКСТОВАЯ структура 'локатора' необходима и поставляет параметр в правильном формате. Кажется, что драйвер ODBC не потворствует Вам с подобными интригами.

В ESQL/C, где я обычно работаю, затем код должен иметь дело с БАЙТОМ и ТЕКСТОМ по-другому по сравнению со всем остальным (и BLOB, и с CLOB нужно иметь дело по-другому снова). Но можно создать и заполнить структуру локатора (loc_t или ifx_loc_t от locator.h - который не может быть в каталоге ODBC; это находится в $INFORMIXDIR/incl/esql по умолчанию), и передайте это коду ESQL/C как host-переменная для соответствующего заполнителя в SQL-операторе. В принципе существует, вероятно, параллельный метод, доступный для ODBC. Вам, вероятно, придется посмотреть на руководство драйвера ODBC Informix для нахождения его, все же.

5
ответ дан 14 December 2019 в 19:28
поделиться
Другие вопросы по тегам:

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