Гость
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / импорт данных из XML файла в SQL Manager Lite for PostgreSQL / 8 сообщений из 8, страница 1 из 1
21.01.2020, 16:52
    #39916883
erleug
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
импорт данных из XML файла в SQL Manager Lite for PostgreSQL
у меня есть файлы, которые хотел бы импортировать в БД Есть таблица Test с полем xml пытаюсь сделать импорт

Код: plsql
1.
2.
3.
4.
5.
6.
COPY
  public."Test"
( 
  "TestXML" 
)
FROM 'D:\file.xml';



Вылетала ошибка

Код: plsql
1.
ERROR:  could NOT OPEN file "D:\file.xml" FOR reading: No such file OR directory



Понимаю, что скорее всего проблема в неправильности пути. Решение было в экранировании слэшов в пути к файлу.

Код: plsql
1.
2.
3.
4.
5.
6.
COPY    
public."Test"
    (
      "TestXML"
    )
    FROM E'D:\\file.xml';



Файл читает, но теперь проблема в другом, при считывании файла вылетает ошибка

Код: plsql
1.
2.
ОШИБКА:  invalid XML content
CONTEXT:  COPY Test, строка 1, колонка TestXML: "<?xml version="1.0" encoding="UTF-8"?>"



Думаю проблема в переносе строки, в скрипте дописываю
Код: plsql
1.
DELIMITER '\n'

и вылетает ошибка

Код: plsql
1.
ОШИБКА:  разделитель для COPY должен быть однобайтным символом



Также пробовал
Код: plsql
1.
WITH DELIMITER AS E'\n'

и все также вылетает ошибка

Код: plsql
1.
ОШИБКА:  разделителем для COPY не может быть символ новой строки или возврата каретки



В документации пишется, что команда COPY FROM распознаёт следующие спецпоследовательности: \n, \r и тп. То есть принимать разделитель оно должно. Подскажите, в чем тут ошибка или как можно корректно импортировать данные с XML файла в БД
...
Рейтинг: 0 / 0
21.01.2020, 18:34
    #39916922
Troglodit
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
импорт данных из XML файла в SQL Manager Lite for PostgreSQL
erleug,

ДокументацияЗаданный файл должен быть доступен пользователю PostgreSQL (тому пользователю, от имени которого работает сервер), и путь к файлу должен задаваться с точки зрения сервера
...
Рейтинг: 0 / 0
22.01.2020, 11:36
    #39917199
erleug
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
импорт данных из XML файла в SQL Manager Lite for PostgreSQL
Troglodit, сервер находится на моем компе, импорт выполняю через админ права, доступ к файлу есть
...
Рейтинг: 0 / 0
22.01.2020, 11:46
    #39917209
erleug
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
импорт данных из XML файла в SQL Manager Lite for PostgreSQL
вообщем при такой структуре файла импорт работает:

Код: xml
1.
2.
<Root><step>Manufacturing step 1 at this work center</step><step>Manufacturing step 2 at this work center</step></Root>
<Root2><step>Manufacturing step 1 at this work center</step><step>Manufacturing step 2 at this work center</step></Root2>



когда добавляю строчку с кодировкой и версией файла
Код: xml
1.
2.
3.
<?xml version="1.0" encoding="UTF-8"?>
<Root><step>Manufacturing step 1 at this work center</step><step>Manufacturing step 2 at this work center</step></Root>
<Root2><step>Manufacturing step 1 at this work center</step><step>Manufacturing step 2 at this work center</step></Root2>


то выбивает ошибку

Код: html
1.
2.
ОШИБКА:  invalid XML content
CONTEXT:  COPY Test, строка 1, колонка TestXML: "<?xml version="1.0" encoding="UTF-8"?>"



hex-редактором прошелся, лишних символов в файле нету. Что в таком случае может быть неправильного?
...
Рейтинг: 0 / 0
22.01.2020, 12:17
    #39917239
Melkij
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
импорт данных из XML файла в SQL Manager Lite for PostgreSQL
Да потому что copy - построчное копирование. Строка файла в строку таблицы.
Поскольку поле TestXML в вашей public."Test" очевидно типа xml - то его входная валидация проглатывает документ без xml декларации (она опциональна), но документ только из xml декларации явно не является корректным xml.

И это вы ещё не нарушили формат ожидаемой строки самого COPY.
...
Рейтинг: 0 / 0
22.01.2020, 12:17
    #39917241
Sergej Grischenkow
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
импорт данных из XML файла в SQL Manager Lite for PostgreSQL
А если пробел поставить до ?>
...
Рейтинг: 0 / 0
22.01.2020, 12:25
    #39917247
erleug
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
импорт данных из XML файла в SQL Manager Lite for PostgreSQL
Melkij, да столбец типа xml, так в таком случае можно не указывать строку с кодировкой? или нужно сменить тип столбца?
...
Рейтинг: 0 / 0
22.01.2020, 17:05
    #39917460
Guzya
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
импорт данных из XML файла в SQL Manager Lite for PostgreSQL
Сделайте, один xml-документ одна строка в файле.
...
Рейтинг: 0 / 0
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / импорт данных из XML файла в SQL Manager Lite for PostgreSQL / 8 сообщений из 8, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]