Есть ли лучший способ загрузить набор записей с помощью JSON или что-то еще?

У меня есть база данных Firebird и мне нужно загрузить одну из таблиц базы данных на удаленный сервер MySQL в сети. Есть тысячи записей, и я не знаю, как загрузить эти записи. Я могу загружать записи по одной с JSON. Я использую метод POST.

Как я могу загрузить все записи за один раз или по частям?

Обновление 1: Этот код работает для одного за другим обновления данных. Но это как такая атака наводнения. Я хочу загрузить все данные, которые я выбрал, за один раз.

Delphi 7 Side
HTTP Post Method

function PostURLAsString(aURL: string; code:string): string;
var
lHTTP: TIdHTTP;
lStream: TStringStream;
parameters: TStringList;

begin
lHTTP := TIdHTTP.Create(nil);
lHTTP.Request.ContentType := 'application/x-www-form-urlencoded';
lStream := TStringStream.Create(Result);
try
Parameters := TStringList.Create;
parameters.Add('code=' + code);
lHTTP.Post(aURL, parameters,lStream);
lStream.Position := 0;
Result := lStream.ReadString(lStream.Size);
finally
FreeAndNil(lHTTP);
FreeAndNil(lStream);
end;
end;

Загрузить записи по одной:

procedure TForm1.Button1Click(Sender: TObject);
var
js:TlkJSONobject;
jb: TlkJSONbase;
s: String;
code:string;
begin
IBQuery1.First;
with IBQuery1 do
while not Eof do
begin
code :=   VarToStr(FieldValues['code']);
s := PostURLAsString('http://www.domain.com/uitems.php', code);

js := TlkJSON.ParseText(s) as TlkJSONobject;
jb := js.Field['items'];

if VarToStr(jb.Child[0].Field['status'].Value) = '1' then
ListBox1.Items.Add(code + ' is inserted')
else
ListBox1.Items.Add(code + ' is not inserted');

Application.ProcessMessages;

js.Free;
Next;
end;
end;

PHP сторона
uitems.php

<?php
include_once dirname(__FILE__) .'/DBConnect.php';

function update($code){

$db = new DbConnect();

// array for json response
$response = array();
$response["items"] = array();

$sqlstr = "INSERT INTO items (`code`) VALUES ('$code')";

$result = mysql_query($sqlstr);$tmp = array();

if ($result) {
// successfully updated
$tmp["status"] = 1; //inserted
} else {
$tmp["status"] = 0; //not inserted
}

array_push($response["items"], $tmp);

header("Content-Type: application/json; charset=utf-8", true);
// echoing json result
echo json_encode($response, JSON_UNESCAPED_UNICODE);

}

update($_POST["code"]);

?>

0

Решение

Вы можете отправлять массивы данных, используя JSON. Просто подготовьте этот массив на стороне Delphi, отправьте его в ваш скрипт и выполните запрос для каждого элемента вашего массива. Вы также можете вернуть массив, который включает в себя сообщения об успешном выполнении для каждого загруженного вами элемента массива.

2

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector