zoukankan      html  css  js  c++  java
  • 备份数据表为insert 脚本

    unit Unit1;

    interface

    uses
    Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants,
    System.Classes, Vcl.Graphics,
    Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Data.DB,
    Datasnap.DBClient;

    type
    TForm1 = class(TForm)
    cds: TClientDataSet;
    Button1: TButton;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    private
    { Private declarations }
    procedure ExportData(const tableNames: string);
    procedure ImportData(const fileName, tableNames: string);
    public
    { Public declarations }
    end;

    var
    Form1: TForm1;

    implementation

    {$R *.dfm}

    uses untDB;

    procedure TForm1.Button1Click(Sender: TObject);
    begin
    ExportData('bas_kind,bas_goods');
    end;

    procedure TForm1.Button2Click(Sender: TObject);
    begin
    ImportData(ExtractFilePath(Application.ExeName) + 'export.sql', 'bas_kind,bas_goods');
    end;

    procedure TForm1.ExportData(const tableNames: string);
    var
    sql, err: string;
    sl, tables: TStringList;
    i, h: Integer;
    fieldNames, values: string;
    function GetValue(field: TField): string;
    begin
    case field.DataType of
    ftString, ftTimeStamp:
    begin
    Result := QuotedStr(field.AsString);
    end;
    ftBoolean:
    begin
    case field.AsBoolean of
    true: Result := '1';
    false: Result := '0';
    end;
    end;
    else
    if not VarIsNull(field.Value) then
    begin
    Result := VarToStr(field.Value);
    end
    else
    Result := 'null';
    end;
    end;

    begin
    if tableNames = '' then
    exit;
    tables := TStringList.Create;
    tables.Delimiter := ',';
    tables.DelimitedText := tableNames;
    sl := TStringList.Create;
    sl.Clear;
    for h := 0 to tables.Count - 1 do
    begin
    sql := 'select * from ' + tables[h];
    if frmDB.QuerySQL(sql, cds, err) and (not cds.IsEmpty) then
    begin
    cds.First;
    while not cds.Eof do
    begin
    fieldNames := '';
    values := '';
    for i := 0 to cds.FieldCount - 1 do
    begin
    if fieldNames = '' then
    begin
    fieldNames := cds.Fields[i].FieldName;
    end
    else
    begin
    fieldNames := fieldNames + ',' + cds.Fields[i].FieldName;
    end;
    if values = '' then
    begin
    values := GetValue(cds.Fields[i]);
    end
    else
    begin
    values := values + ',' + GetValue(cds.Fields[i]);
    end;
    end;
    sl.Add('insert into ' + tables[h] + '(' + fieldNames + ') values (' +
    values + ')');
    cds.Next;
    end;
    end;
    end;
    sl.SaveToFile(ExtractFilePath(Application.ExeName) + 'export.sql');
    sl.Free;
    tables.Free;
    end;

    procedure TForm1.ImportData(const fileName, tableNames: string);
    var
    cmd, tables: TStringList;
    err, sql: string;
    i: Integer;
    begin
    if (not FileExists(fileName)) or (tableNames = '') then
    exit;
    tables := TStringList.Create;
    tables.Delimiter := ',';
    tables.DelimitedText := tableNames;
    for i := 0 to tables.Count - 1 do
    begin
    sql := 'truncate table ' + tables[i];
    frmDB.ExecuteSQL(sql, err);
    end;
    tables.Free;

    cmd := TStringList.Create;
    cmd.LoadFromFile(fileName);
    frmDB.ExecuteSQL(cmd.Text, err);
    cmd.Free;
    end;

    end.

  • 相关阅读:
    Python中的类(上)
    Django REST Framework API Guide 07
    Django REST Framework API Guide 06
    Django REST Framework API Guide 05
    Django REST Framework API Guide 04
    Django REST Framework API Guide 03
    Django REST Framework API Guide 02
    Django REST Framework API Guide 01
    Django 详解 信号Signal
    Django 详解 中间件Middleware
  • 原文地址:https://www.cnblogs.com/hnxxcxg/p/3796241.html
Copyright © 2011-2022 走看看