powered by simpleCommunicator - 2.0.50     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Экспорт данных в скрипт
9 сообщений из 34, страница 2 из 2
Экспорт данных в скрипт
    #39976998
PATRI0T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
И через IBExpert Тоже не вставляет. Вот таблица куда вставку пытаюсь сделать
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
CREATE TABLE ORDERS (
    ID                     INTEGER NOT NULL,
    ITM_ORDERNUM           VARCHAR(100) NOT NULL,
    STARTDATE              DATE,
    STATUS_DESCRIPTION     VARCHAR(100) NOT NULL,
    TOTALCOST              NUMERIC(7,2),
    ORDER_PAY              NUMERIC(7,2),
    DEBT                   NUMERIC(7,2),
    DATE_PACK              DATE,
    DATE_OUT               DATE,
    BOX_PACKED             INTEGER,
    BOX_OUT                INTEGER,
    DRIVER_NAME            VARCHAR(100),
    FILEPATH_CALC_CLIENT   VARCHAR(200),
    FILEPATH_CALC_MANAGER  VARCHAR(200),
    FILEPATH_BILL          VARCHAR(200),
    CLIENTNAME             VARCHAR(50) NOT NULL
...
Рейтинг: 0 / 0
Экспорт данных в скрипт
    #39977100
Фотография o_v_a
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А что вывод select даёт по полям DATE_PACK и DATE_OUT ?
Почему fb_export их прописал как пустые строки?
...
Рейтинг: 0 / 0
Экспорт данных в скрипт
    #39977138
PATRI0T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
m7m,

да, все так. Исправил, получилось.
Даты превращались в пустые строки, когда были Null. Там был select coalesce. Это поубирал, стало норм.
Но, как мне говорили умные люди, импорт оооочень долгий.. Импортирую так:
Код: sql
1.
2.
3.
4.
5.
6.
isql-fb \
	-ch "UTF8" \
	-i $IMPORTSQL \
	-u $USER \
	-p $PASS \
	"$HOST:$DB" 


И 200 записей импортировалось 30 секунд.. я боюсь про 20 тысяч...
Есть какие-нибудь варианты?
...
Рейтинг: 0 / 0
Экспорт данных в скрипт
    #39977139
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PATRI0TИ 200 записей импортировалось 30 секунд..

Ты их что, прямо через интернет импортировал? Надо было файл скрипта перекачать на целевой
сервер и импортировать локально.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Экспорт данных в скрипт
    #39977149
Фотография o_v_a
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PATRI0T

И 200 записей импортировалось 30 секунд.. я боюсь про 20 тысяч...
Есть какие-нибудь варианты?

Если есть критерии по времени выполнения, то только перенос скрипта на удаленный сервер и выполнение его там как ДС сказал.
Иначе скармливай роботу и нехай себе барабанит хоть несколько часов.
В моём случае роботы раз в сутки этим занимаются. И пускай хоть 24 часа это длится. Мне лично всё равно. Главное, чтоб раз в сутки процесс шёл и доходил до конца.
...
Рейтинг: 0 / 0
Экспорт данных в скрипт
    #39977152
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PATRI0T
репликацией ни разу не пользовался
Время пришло, пора.
...
Рейтинг: 0 / 0
Экспорт данных в скрипт
    #39977156
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
o_v_aГлавное, чтоб раз в сутки процесс шёл и доходил до конца.

У него в пятом сообщении заявлен нестабильный интернет, так что фиг он дойдёт до конца.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Экспорт данных в скрипт
    #39977191
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PATRI0T,

для справки. в пустую таблицу чуть поменьше размером записи, без индексов, скриптом, через isql, 1 миллион записей вставляется за 24 секунды. На десктопном компе.
...
Рейтинг: 0 / 0
Экспорт данных в скрипт
    #39977202
PATRI0T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kdv, да, все получилось. Если импортировать через весь интернет, то мои ~20тыщ записей засасываются 4секунды на слабенькой VPS
Спасибо всем огромное

Получился вот такой скрипт. Вдруг кому еще пригодится

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
#!/bin/bash

#INIT	
	HOST='******'
	DB='******\TEST SOLO.FDB'
	USER='******'
	PASS='******'
	
	EXP_FNAME_ORDERS='fb-export-orders.sql'
	EXP_FNAME_USERS='fb-export-users.sql'
	IMPORTSQL="fb-import.sql"
	
	TESTMODE="first 1" # чтобы быстрее работало в процессе отладки

	SQL_EXPORT_ORDERS="select $TESTMODE
        o.id,
        o.itm_ordernum,
        Coalesce(cast( o.plan_date_firststage as date),'01.01.2000') as StartDate,
        ls.status_description,
        coalesce( o.order_total_cost,0) as TotalCost,
        o.order_pay,
        iif ( o.order_status <7,
            iif(
                COALESCE (o.order_pay,0)>COALESCE (o.order_total_cost,0)*0.5,
                0,
                COALESCE (o.order_total_cost,0)/2-COALESCE (o.order_pay,0)
                ),
            COALESCE (o.order_total_cost,0)-COALESCE (o.order_pay,0)
        ) as Debt,
        ju.date_pack as date_pack,
        jo.fact_date_out as date_out,
        ju.box_count as box_packed,
        jo.box_count as box_out,
        jo.driver_name as driver_name,
        FILEPATH_CALC_CLIENT,
        FILEPATH_CALC_MANAGER,
        FILEPATH_BILL,
        o.client as clientname
    from orders o
            left join journal_upack ju on ju.order_id=o.id
            left join journal_out jo on jo.order_id=o.id
            left join list_statuses ls on ls.status_num=o.order_status
            left join clients c on o.client = c.clientname
    where o.order_status > 0;"

	SQL_EXPORT_USERS="select $TESTMODE
		ID,
		upper(USERNAME) as USERNAME,
		USERROLE,
		PASSWD,
		CLIENTID
    FROM USERS
    WHERE USERROLE = 'client'"

echo ">>>> Export data "
echo "> Export orders table.."

# Orders
fbexport \
	-Si \
	-A "UTF8" \
	-H $HOST \
	-D "$DB"  \
	-U $USER \
	-P $PASS \
	-F $EXP_FNAME_ORDERS \
	-Q "$SQL_EXPORT_ORDERS"

# Users
fbexport \
	-Si \
	-A "UTF8" \
	-H $HOST \
	-D "$DB"  \
	-U $USER \
	-P $PASS \
	-F $EXP_FNAME_USERS \
	-Q "$SQL_EXPORT_USERS"


	echo "Delete from orders;" > $IMPORTSQL
	cat $EXP_FNAME_ORDERS      >> $IMPORTSQL
	cat $EXP_FNAME_USERS       >> $IMPORTSQL
echo ">> OK."


#----------------------------------------	
echo ">>>> Send fbimport file via  scp "

# Import data
	HOST='******'
	USER='******'
	REMOTEFILE='/var/docker/firebird-exchangedir/'
	
	 scp ./$IMPORTSQL  $USER@$HOST:$REMOTEFILE
	 echo ">> OK."
echo ">>>> Import fb-import.sql"
	 ssh  $USER@$HOST sudo docker exec solo-firebird bash /firebird/fb-import.sh
echo "-- DONE --"

...
Рейтинг: 0 / 0
9 сообщений из 34, страница 2 из 2
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Экспорт данных в скрипт
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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