0
有沒有辦法使用Slick SourceCodeGenerator從SQL CREATE語句文件中生成源代碼?我知道有一種方法可以連接到數據庫並讀取模式,但是我希望切出這一步並將其提供給文件。請指教。Slick SourceCodeGenerator來自SQL文件
有沒有辦法使用Slick SourceCodeGenerator從SQL CREATE語句文件中生成源代碼?我知道有一種方法可以連接到數據庫並讀取模式,但是我希望切出這一步並將其提供給文件。請指教。Slick SourceCodeGenerator來自SQL文件
通過jdbc準備好元數據。如果你找到一個可以通過SQL文件實現的jdbc驅動程序,那麼你可能很幸運。否則,爲什麼不使用H2內存數據庫?它具有各種SQL方言的兼容模式。但它們是有限的。另一個選擇是使用這樣的東西:https://github.com/bgranvea/mysql2h2-converter首先產生一個H2兼容的模式文件。
我們使用以下腳本從mysql數據庫加載sql模式,將其轉換爲H2兼容格式,然後在內存中使用它進行測試。你應該能夠適應它。
#!/bin/sh
echo ''
export IP=192.168.1.123
export user=foobar
export password=secret
export database=foobar
ping -c 1 $IP &&\
echo "" &&\
echo "Server is reachable"
# dump mysql schema for debuggability (ignore in git)
# convert the mysql to h2db using the converter.
## disable foreign key check in begining and enable it in the end. Prevents foreign key errors
echo "SET FOREIGN_KEY_CHECKS=0;" > foobar-mysql.sql
## Dump the Db structure and remove the auto_increment so as to set the id column back to 1
mysqldump --compact -u $user -h $IP -d $database -p$password\
|sed 's/CONSTRAINT `_*/CONSTRAINT `/g' \
|sed 's/KEY `_*/KEY `/g' \
|sed 's/ AUTO_INCREMENT=[0-9]*//' \
>> foobar-mysql.sql
echo "SET FOREIGN_KEY_CHECKS=1;" >> foobar-mysql.sql &&\
java -jar mysql2h2-converter.jar foobar-mysql.sql \
|perl -0777 -pe 's/([^`]),/\1,\n /g' \
|perl -0777 -pe 's/\)\);/)\n);/g' \
|perl -0777 -pe 's/(CREATE TABLE [^\(]*\()/\1\n /g' \
|sed 's/UNSIGNED/unsigned/g' \
|sed 's/float/real/' \
|sed "s/\(int([0-9]*).*\) DEFAULT '\(.*\)'/\1 DEFAULT \2/" \
|sed "s/tinyint(1)/boolean/" \
> foobar-h2.sql
perl -ne 'print "$ARGV\n" if /.\z/' -- foobar-h2.sql