Ich benutze InfiniDB (nicht nach Wahl). Wenn ich die Linux-Shell verwenden, ich bin ganz gut mit einer Datenbank verbinden können:mysql hängt bei der Anmeldung
<user>@<host>:~$ /usr/local/Calpont/mysql/bin/mysql -u <user> -p -h <host>
Enter password: <password>
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 1725
Server version: 5.1.39 MySQL Community/Calpont InfiniDB Community 2.2.11-1 Fin al (COSS LA)
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> use <database_name>
Database changed
mysql>
Aber wenn ich ein Bash-Skript verwenden, hängt es:
<user>@<host>:~$ bash -x /home/aliceell/db_export.sh
+ DB=al05_09
+ export_dir=/tmp/
++ /usr/local/Calpont/mysql/bin/mysql -u <user> -p -h <host> <db_name>
Enter password:
Es reagiert nicht, nachdem ich meine eingeben Passwort und drücken Sie "Enter". Ich muss ctrl-C benutzen, um rauszukommen. Hier
ist der Code, den ich habe:
DB=<db_name>
export_dir="/tmp/"
err_exit()
{
echo -e 1>&2
exit 1
}
mysql_data_dir=$(/usr/local/Calpont/mysql/bin/mysql -u <user> -p -h <host> <db_name>) #it hangs at this stage
if ! (mysqlshow $DB 1>/dev/null); then
echo ERROR: unable to access database
exit 1
fi
echo "connected"
if ! [ -w $export_dir ]; then
echo ERROR: export dir is not writable
exit 1
fi
ExportTable()
{
/usr/local/Calpont/mysql/bin/mysql -u <user> -p -h <host> <db_name>"
SELECT * INTO OUTFILE '/tmp/$T.csv'
FIELDS TERMINATED BY '|'
LINES TERMINATED BY '\n'
FROM $T
"
}
/usr/local/Calpont/mysql/bin/mysql -u <user> -p -h <host> <db_name> "show tables" |
while read T; do
echo exporting $T
ExportTable || err_exit
sudo mv $mysql_data_dir/$DB/$T.psv $export_dir/ || err_exit
done
Ich bin neu zu bash und versuchen, es zu Schleife zu verwenden, um alle Tabellen in meiner Datenbank und exportieren (similar to this script), aber es hat keinen Sinn, wenn ich nicht einmal mit der Datenbank verbinden kann ...
Vielen Dank im Voraus für Ihre Hilfe.
Wie sieht 'db_export.sh' eigentlich aus? – chepner
Es sieht aus wie das Skript, das ich im Post verlinkt habe. Ich habe meinen Beitrag bearbeitet, um den Code hinzuzufügen. Außer dass ich/usr/local/Calpont/mysql/bin/mysql anstatt nur mysql benutzen muss, weil es so für infinidb (afaik) funktioniert. – ale19