PostgreSQL Copy from Stdin

Оконная функция PostgreSQL База данных

PostgreSQL, как и другие системы управления базами данных, поддерживает стандартные потоки. Эти потоки отвечают за управление данными для хранения в PostgreSQL. Это входные и выходные каналы связи между приложением и средой, которая создается во время выполнения.

Каждый раз, когда мы выполняем команду в PostgreSQL, потоки устанавливают соединение с текстовым терминалом, на котором запущена psql (оболочка). Однако в случае наследования каждый дочерний процесс наследует потоки от родительского процесса. Не каждой программе нужно, чтобы эти потоки были включены в код, некоторые функции, такие как getchar () и putchar (), автоматически используют потоки ввода и вывода. Потоки относятся к категории 3.

Stdin : это стандартный поток ввода. Он используется, когда программа считывает входные данные.

Stdout : это подразумевает стандартный поток вывода, используемый, когда приложение записывает данные (вывод) в файл.

Stderr : этот поток относится к ошибкам в приложении. Это используется для отображения или уведомления пользователя о возникновении ошибки во время выполнения.

Общий синтаксис для этих трех типов:

FILE *stdin;

FILE *stdout;

FILE *stderr;

Стандартный ввод считывается «клавиатурой» устройства ввода, тогда как стандартный вывод и стандартные ошибки отображаются на экране монитора устройства вывода. Первые два потока используются для выборки и отображения данных простыми словами, но третий в основном используется, когда нам нужно диагностировать ошибки. Я говорю об обработке исключений в языках программирования.

Стандартный ввод (stdin):

При создании исходного кода большинство функций зависят от потока stdin для функции ввода. Но некоторые программы, такие как программы dir и ls, не требуют этой функции, поскольку они принимают аргументы командной строки. Такая ситуация возникает, когда программа полагается на систему для ввода, но не взаимодействует с пользователем. Например, программы, связанные с каталогом и путями, не требуют ввода для выполнения.

Каждому файлу, находящемуся в процессе выполнения, система присваивает уникальный номер. Это называется файловым дескриптором. Для стандартного ввода значение дескриптора файла равно «0». В языке программирования C файловый дескриптор имеет переменную file * stdin, аналогично языку C ++. Переменная определяется как std:: cin.

Stdin в PostgreSQL

После установки и настройки базы данных для подключения к серверу вам необходимо ввести пароль, чтобы продолжить. Эти меры предназначены для аутентификации пользователя.

После установки и настройки базы данных для подключения

Копировать данные из стандартного ввода в таблицу

Чтобы подтвердить механизм stdin, нам нужно создать фиктивную таблицу. Чтобы мы могли читать и копировать данные из файла в другой, добавив stdin.

 >>create table school (id int, name varchar(10), address varchar(20), Subject varchar(20));

После создания таблицы мы добавим в нее значения с помощью команды вставки. Добавьте образцы данных в несколько строк, остальные будут добавлены с использованием «STDIN».

>> insert into school values ( 1, ‘Ahmad’, ‘lahore’,‘sciences’),( 2, ‘shazain’, ‘Islamabad’,‘Arts’),( 3, ‘Zain’, ‘karachi’,‘sciences’);

Помимо оператора «INSERT», существует альтернатива для загрузки значений в таблицу. Это через «STDIN». В PostgreSQL мы вводим данные в таблицу из терминала построчно, используя разделитель. Этот разделитель является разделителем между значениями двух столбцов строки. В любом случае этот разделитель может быть пробелом, запятой или пробелом. Но рекомендуется использовать разделитель в качестве stdin, CSV (значения, разделенные запятыми). И никакой другой символ здесь не упоминается. Используется ключевое слово «COPY», которое копирует данные с экрана psql, в частности, в таблицу.

>> Copy school from stdin (Delimiter ‘,);

Когда вы используете запрос, здесь упоминаются некоторые инструкции по размещению данных. Это пункты, которые помогут пользователю правильно ввести данные. Каждую строку следует вводить с новой строки.

Здесь мы пойдем шаг за шагом. Каждое значение, записанное перед запятыми или между ними, представляет каждый столбец. Поскольку имеется 4 столбца, в качестве CSV используются 4 значения. Введите первую строку и нажмите вкладку.

Каждое значение, записанное перед запятыми или между ними

Когда одна строка будет завершена, вы перейдете к следующей строке. Независимо от того, сколько строк вы хотите добавить, как и в инструкции вставки, все безграничные данные будут помещены внутри таблицы. Возвращаясь к примеру, мы написали вторую строку и переходим к следующей.

Для демонстрации мы использовали 2 ряда

Для демонстрации мы использовали 2 ряда. Фактическая вставка приведет к тому, что данные будут соответствовать требованиям. Если вы закончили добавление строк в таблицу и хотите выйти из этого механизма, вы обязательно будете использовать конец файла (EOF).

Если вы закончили добавление строк в таблицу

Вам нужно завершить добавление данных обратной косой чертой (\) и точкой (.) В последней строке, если вы не хотите добавлять дополнительные строки.

Вам нужно завершить добавление данных обратной косой чертой

Теперь давайте окончательно рассмотрим весь код от запроса до EOF. В конце «копия 3» указывает, что в таблицу добавлены 3 строки.

Примечание. Оператор EOF не добавляется в качестве символа в новую строку таблицы.

Оператор EOF не добавляется в качестве символа в новую строку таблицы

Продолжайте добавлять данные через «стандартный ввод» в соответствии с требованиями. Вы можете проверить данные, которые вы вставили, с помощью оператора select.

>> select * from school;

Продолжайте добавлять данные через «стандартный ввод»

Копировать данные из таблицы в стандартный ввод

Если вас интересует копирование данных в одну таблицу из таблицы, то мы используем для этого stdin. Прямое копирование одной таблицы в другую в PostgreSQL невозможно.

Создайте образец таблицы, чтобы скопировать все данные из таблицы (школы). Следует помнить о добавлении данных столбца, тип которых аналогичен целевой таблице.

Создайте образец таблицы, чтобы скопировать все данные

Теперь добавьте данные этого файла, используя тот же оператор stdin копии. Данные могут быть такими же, или вы можете изменить их, добавив новую строку, которой не было в исходной таблице.

Теперь добавьте данные этого файла, используя тот же оператор stdin копии

>> copy school_copy from stdin (delimeter ‘,)

Используйте оператор выбора, чтобы ввести данные.

Используйте оператор выбора, чтобы ввести данные

Вывод с использованием STDOUT вместо оператора SELECT

Поскольку мы используем stdin как альтернативу инструкции вставки. Точно так же STDOUT используется вместо оператора select. Представление не в виде таблицы. Для вывода используется разделитель «|». Этот разделитель автоматически помещается между столбцами в каждой строке.

>> copy school_copy to stdout (DELIMITER ‘|);

Этот разделитель автоматически помещается между

Возникновение ошибок при использовании разделителей DELIMITER ’|’

Если вы используете разделитель ’|’ при замене CSV это вызовет ошибку. Это не приведет к копированию данных с терминала и вызовет синтаксическую ошибку.

Это не приведет к копированию данных с терминала

Заключение

«Копирование PostgreSQL из стандартного ввода» помогает дублировать данные одной таблицы в другую. В этой статье мы сначала познакомили вас со стандартными потоками, stdin, он работает, теоретически, а затем кратко объяснили примеры. Конкурентное преимущество stdin перед оператором insert заключается в том, что если строка по ошибке пропущена при копировании данных, мы можем добавить ее между существующими строками. Руководствуясь этим руководством, вы сможете копировать содержимое таблиц.

Читайте также:  Установка MariaDB в Ubuntu 20.04
Оцените статью
bestprogrammer.ru
Добавить комментарий