mysql and Windows Script

Posted on 2005-04-19
Last Modified: 2012-05-05
here my bat file:

C:\mysql\bin>type cb.bat
c:\mysql\bin\mysql < cb.sql %1 %2 %3 %4

here the cb.file:

C:\mysql\bin>type cb.sql
create database %1;
grant all privileges on %1.* to '%2'@'%3' identified by '%4';
flush privileges;

i type: cb colector root linuxx but say me some errors see:

C:\mysql\bin>cb colector root linuxx

C:\mysql\bin>c:\mysql\bin\mysql  colector root linuxx 0<cb.sql
c:\mysql\bin\mysql  Ver 11.18 Distrib 3.23.55, for Win95/Win98 (i32)
Copyright (C) 2000 MySQL AB & MySQL Finland AB & TCX DataKonsult AB
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL license

Usage: c:\mysql\bin\mysql [OPTIONS] [database]

  -?, --help            Display this help and exit.
  -A, --no-auto-rehash  No automatic rehashing. One has to use 'rehash' to
                        get table and field completion. This gives a quicker
                        start of mysql and disables rehashing on reconnect.
  -B, --batch           Print results with a tab as separator, each row on
                        a new line. Doesn't use history file.
                        Directory where character sets are located.
  -C, --compress        Use compression in server/client protocol.
  -D, --database=..     Database to use.
                        Set the default character set.
  -e, --execute=...     Execute command and quit. (Output like with --batch)
  -E, --vertical        Print the output of a query (rows) vertically.
  -f, --force           Continue even if we get an sql error.
  -g, --no-named-commands
                        Named commands are disabled. Use \* form only, or
                        use named commands only in the beginning of a line
                        ending with a semicolon (;) Since version 10.9 the
                        client now starts with this option ENABLED by
                        default! Disable with '-G'. Long format commands
                        still work from the first line.
  -G, --enable-named-commands
                        Named commands are enabled. Opposite to -g.
  -i, --ignore-spaces   Ignore spaces after function names.
  -h, --host=...        Connect to host.
  -H, --html            Produce HTML output.
  --local-infile=[1|0]  Enable/disable LOAD DATA LOCAL INFILE
  -L, --skip-line-numbers
                        Don't write line number for errors.
  --no-tee              Disable outfile. See interactive help (\h) also.
  -n, --unbuffered      Flush buffer after each query.
  -N, --skip-column-names
                        Don't write column names in results.
  -O, --set-variable var=option
                        Give a variable an value. --help lists variables.
  -o, --one-database    Only update the default database. This is useful
                        for skipping updates to other database in the update
  -p[password], --password[=...]
                        Password to use when connecting to server
                        If password is not given it's asked from the tty.
  -W, --pipe            Use named pipes to connect to server

  -P, --port=...        Port number to use for connection.
  -q, --quick           Don't cache result, print it row by row. This may
                        slow down the server if the output is suspended.
                        Doesn't use history file.
  -r, --raw             Write fields without conversion. Used with --batch
  -s, --silent          Be more silent.
  -S  --socket=...      Socket file to use for connection.
  -t, --table           Output in table format.
  -T, --debug-info      Print some debug info at exit.
  --tee=...             Append everything into outfile. See interactive help
                        (\h) also. Does not work in batch mode.
  -u, --user=#          User for login if not current user.
  -U, --safe-updates[=#], --i-am-a-dummy[=#]
                        Only allow UPDATE and DELETE that uses keys.
  -v, --verbose         Write more. (-v -v -v gives the table output format)
  -V, --version         Output version information and exit.
  -w, --wait            Wait and retry if connection is down.

Default options are read from the following files in the given order:
C:\WINDOWS\my.ini C:\my.cnf
The following groups are read: mysql client
The following options may be given as the first argument:
--print-defaults        Print the program argument list and exit
--no-defaults           Don't read default options from any options file
--defaults-file=#       Only read default options from the given file #
--defaults-extra-file=# Read this file after the global files are read

Possible variables for option --set-variable (-O) are:
connect_timeout       current value: 0
max_allowed_packet    current value: 16777216
net_buffer_length     current value: 16384
select_limit          current value: 1000
max_join_size         current value: 1000000


any advice??? thanks
Question by:jamiguel
    1 Comment
    LVL 20

    Accepted Solution

    There are 2 problems with the way you're trying to do this...

    1.  The format of this line is incorrect:   c:\mysql\bin\mysql < cb.sql %1 %2 %3 %4
         It should look like this:  c:\mysql\bin\mysql --database=%1  --user=%2  %3  --password=%4  < cb.sql

    2.  There isn't any facility present in "mysql.exe" to substitute symbols into the sql script... i.e. the %n mechanism is a Command Shell feature, not a mysql.exe feature.

    The equvalent of what you're trying to do would be fairly trivial to code in VBScript (or just about any other scripting language). however.  It's a bit less trivial (the code is longer but not more complex) to support oarameter values that might have embedded spaces within them.

    If you're interested in pursuing that option just let me know... earlier today I created a VBScript to create two tables with a FK relationship between them and populate both tables from two text files.  The code was about 100 lines including comments and blank lines to increase readability.  There were no command line parameters and no "parameter substitution logic" in it and that might add another 50-100 lines of code to it.

    Additinally, there might be another utility with "parameter substitution" features freely available on the web.


    Write Comment

    Please enter a first name

    Please enter a last name

    We will never share this with anyone.

    Featured Post

    What Security Threats Are You Missing?

    Enhance your security with threat intelligence from the web. Get trending threat insights on hackers, exploits, and suspicious IP addresses delivered to your inbox with our free Cyber Daily.

    Foreword In the years since this article was written, numerous hacking attacks have targeted password-protected web sites.  The storage of client passwords has become a subject of much discussion, some of it useful and some of it misguided.  Of cou…
    Foreword This is an old article.  Instead of using the MySQL extension that was used in the original code examples, please choose one of the currently supported database extensions instead.  More information is available here: MySQLi / PDO (http://…
    This video discusses moving either the default database or any database to a new volume.
    In this seventh video of the Xpdf series, we discuss and demonstrate the PDFfonts utility, which lists all the fonts used in a PDF file. It does this via a command line interface, making it suitable for use in programs, scripts, batch files — any pl…

    737 members asked questions and received personalized solutions in the past 7 days.

    Join the community of 500,000 technology professionals and ask your questions.

    Join & Ask a Question

    Need Help in Real-Time?

    Connect with top rated Experts

    22 Experts available now in Live!

    Get 1:1 Help Now