์ด๊ฒ์ Ubuntu Online, Fedora Online, Windows ์จ๋ผ์ธ ์๋ฎฌ๋ ์ดํฐ ๋๋ MAC OS ์จ๋ผ์ธ ์๋ฎฌ๋ ์ดํฐ์ ๊ฐ์ ์ฌ๋ฌ ๋ฌด๋ฃ ์จ๋ผ์ธ ์ํฌ์คํ ์ด์ ์ค ํ๋๋ฅผ ์ฌ์ฉํ์ฌ OnWorks ๋ฌด๋ฃ ํธ์คํ ์ ๊ณต์ ์ฒด์์ ์คํํ ์ ์๋ db.executegrass ๋ช ๋ น์ ๋๋ค.
ํ๋ก๊ทธ๋จ:
์ด๋ฆ
db.์คํ - ๋ชจ๋ SQL ๋ฌธ์ ์คํํฉ๋๋ค.
SELECT ๋ฌธ์ ๊ฒฝ์ฐ 'db.select'๋ฅผ ์ฌ์ฉํ์ธ์.
ํค์๋
๋ฐ์ดํฐ๋ฒ ์ด์ค, ์์ฑ ํ ์ด๋ธ, SQL
๊ฐ์
db.์คํ
db.์คํ --๋์
db.์คํ [-i] [SQL=sql_query] [์ ๋ ฅ=name] [์ด์ ์ฌ=name] [๋ฐ์ดํฐ๋ฒ ์ด์ค=name]
[๊ฐ์=name] [--๋์] [--๋ง ์๊ฐ ๋ง์] [--์กฐ์ฉํ] [--ui]
ํ๋๊ทธ :
-i
SQL ์ค๋ฅ๋ฅผ ๋ฌด์ํ๊ณ ๊ณ์
--๋์
์ฌ์ฉ ์์ฝ ์ธ์
--๋ง ์๊ฐ ๋ง์
์์ธํ ๋ชจ๋ ์ถ๋ ฅ
--์กฐ์ฉํ
์กฐ์ฉํ ๋ชจ๋ ์ถ๋ ฅ
--UI
๊ฐ์ ์คํ GUI ๋ํ ์์
๋งค๊ฐ ๋ณ์ :
SQL=sql_query
SQL ๋ฌธ
์: update rybniky set kapri = 'hodne' ์ฌ๊ธฐ์ kapri = 'malo'
์ ๋ ฅ=name
SQL ๋ฌธ์ ํฌํจํ๋ ํ์ผ ์ด๋ฆ
ํ์ค ์ ๋ ฅ์ ๊ฒฝ์ฐ '-'
์ด์ ์ฌ=name
๋ฐ์ดํฐ๋ฒ ์ด์ค ๋๋ผ์ด๋ฒ์ ์ด๋ฆ
์ต์ : MySQL, ์ค๋์ค, SQLite, ํ์ด์ง, ์ค๊ทธ, dbf
ํ๋ง: sqlite
๋ฐ์ดํฐ๋ฒ ์ด์ค=name
๋ฐ์ดํฐ๋ฒ ์ด์ค ์ด๋ฆ
ํ๋ง: $GISDBASE/$LOCATION_NAME/$MAPSET/sqlite/sqlite.db
๊ฐ์=name
๋ฐ์ดํฐ๋ฒ ์ด์ค ์คํค๋ง
๋๋ผ์ด๋ฒ/๋ฐ์ดํฐ๋ฒ ์ด์ค ์๋ฒ์์ ์คํค๋ง๋ฅผ ์ง์ํ์ง ์๋ ๊ฒฝ์ฐ ์ด ์ต์ ์ ์ฌ์ฉํ์ง ๋ง์ญ์์ค.
๊ธฐ์
db.์คํ ์ฌ์ฉ์๊ฐ SQL ๋ฌธ์ ์คํํ ์ ์๋๋ก ํฉ๋๋ค.
๋ ธํธ
db.์คํ SQL ๋ฌธ๋ง ์คํํ๊ณ ๋ฐ์ดํฐ๋ฅผ ๋ฐํํ์ง ์์ต๋๋ค. ๋ฐ์ดํฐ๊ฐ ํ์ํ ๊ฒฝ์ฐ
๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ๋ฐํ๋ ๊ฒฝ์ฐ ์ฌ์ฉ DB.์ ํ.
๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๊ฒฐ์ ์ํ ๋งค๊ฐ๋ณ์๊ฐ ์ด๋ฏธ ์ค์ ๋ ๊ฒฝ์ฐ DB.์ฐ๊ฒฐ, ๊ทธ๋ค์ ๋ค์๊ณผ ๊ฐ์ด ๊ฐ์ฃผ๋ฉ๋๋ค
๊ธฐ๋ณธ๊ฐ์ด๋ฉฐ ๋งค๋ฒ ์ง์ ํ ํ์๊ฐ ์์ต๋๋ค.
์ฒ๋ฆฌํ SQL ๋ช ๋ น์ด ๋ง์ ๊ฒฝ์ฐ ๋ชจ๋ ๋ฐฐ์นํ๋ ๊ฒ์ด ํจ์ฌ ๋น ๋ฆ ๋๋ค.
SQL ๋ฌธ์ ํ ์คํธ ํ์ผ๋ก ๋ณํํ๊ณ ์ฌ์ฉ ์ ๋ ฅ ์ฒ๋ฆฌํ ํ์ผ ๋งค๊ฐ๋ณ์๋ณด๋ค
๊ฐ ๋ฌธ์ ๋ฃจํ์์ ๊ฐ๋ณ์ ์ผ๋ก ์คํ๋ฉ๋๋ค. ์ฌ๋ฌ ๋ช ๋ น์ค์ด ์ ๊ณต๋๋ฉด ๊ฐ SQL์
์ค์ ์ธ๋ฏธ์ฝ๋ก ์ผ๋ก ๋๋์ผ ํฉ๋๋ค.
๊ฐ์ธ๋ณ๋ก ๋ด์ฃผ์ธ์ GRASS SQL ์ธํฐํ์ด์ค ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๋ง๋๋ ๋ฐฉ๋ฒ์ ๋ํด ์์๋ณด์ธ์.
์ฌ์ฉ ์
'cat' ๋ฐ 'soiltype' ์ด์ด ์๋ ์ ํ ์ด๋ธ์ ๋ง๋ญ๋๋ค.
db.execute sql="CREATE TABLE ํ ์(cat ์ ์, ํ ์ ์ ํ varchar(10))"
SQL ๋ฌธ์ด ํฌํจ๋ ํ์ผ์ ์ฌ์ฉํ์ฌ ์ ํ ์ด๋ธ ๋ง๋ค๊ธฐ
db.execute ๋๋ผ์ด๋ฒ=odbc ๋ฐ์ดํฐ๋ฒ ์ด์ค=grassdb ์ ๋ ฅ=file.sql
์์ฑ ํ ์ด๋ธ์ ์ ํ์ ์ฝ์ ํฉ๋๋ค.
db.execute sql="INSERT INTO mysites(id,name,east,north) ๊ฐ(30,'Ala',1657340,5072301)"
SQL ๊ท์น์ ๋ฐ๋ผ ์์ฑ ํญ๋ชฉ์ ์ ๊ฐ์ผ๋ก ์ ๋ฐ์ดํธํฉ๋๋ค.
db.execute sql="๋๋ก ์ ๋ฐ์ดํธ SET ์ฌํ ๋น์ฉ=5 WHERE cat=1"
SQL ๊ท์น์ ๋ฐ๋ผ ์์ฑ ํญ๋ชฉ์ ์ ๊ฐ์ผ๋ก ์ ๋ฐ์ดํธํฉ๋๋ค.
db.execute sql="์ ๋ฐ์ดํธ dourokukan SET testc=50 ์ฌ๊ธฐ์ testc๊ฐ NULL์ ๋๋ค."
์์ฑ ํ ์ด๋ธ์์ ์ ํํ ํ์ ์ญ์ ํฉ๋๋ค.
db.execute sql="์๋ < -91์ธ gsod_stationlist์์ ์ญ์ "
์์ฑ ํ ์ด๋ธ์ ์ ์ด์ ์ถ๊ฐํฉ๋๋ค.
db.execute sql="ALTER TABLE ๋๋ก ADD COLUMN ๊ธธ์ด๋ฅผ ๋ ๋ฐฐ๋ก ๋๋ฆผ"
์ด ์ ํ ๋ณํ - ๊ธฐ์กด ์ด์์ ์ ์ด์ ์ ๋ฐ์ดํธํฉ๋๋ค(๋ค์์ ์ ์ธํ ๋ชจ๋ ๋๋ผ์ด๋ฒ).
DBF):
# 'z_value'๋ varchar์ด๊ณ 'z'๋ ๋ฐฐ์ ๋ฐ๋์ ๋๋ค:
echo "UPDATE geodetic_pts SET z = CAST(z_value AS ์ซ์)" | db.execute ์ ๋ ฅ=-
์์ฑ ํ ์ด๋ธ์์ ์ด์ ์ญ์ ํฉ๋๋ค.
db.execute sql="ALTER TABLE ๋๋ก DROP COLUMN ๊ธธ์ด"
๋๋กญ ํ ์ด๋ธ(์ผ๋ถ ๋๋ผ์ด๋ฒ์์๋ ์ง์๋์ง ์์):
db.execute sql="DROP TABLE fmacopy"
ํ์ผ์ ์ฌ๋ฌ SQL ๋ช ๋ น์ผ๋ก ์์ฑ ์ ๋ฐ์ดํธ(์: file.sql, ๋ช ๋ น์ค)
์ธ๋ฏธ์ฝ๋ก ์ผ๋ก ๋๋์ผ ํจ):
๋๋ก ์ ๋ฐ์ดํธ SET travelcost=5 WHERE cat=1;
๋๋ก ์ ๋ฐ์ดํธ SET travelcost=2 WHERE cat=2;
db.execute ์ ๋ ฅ=file.sql
๊ณตํต 'cat' ์ด ๊ฐ์ ๊ธฐ๋ฐ์ผ๋ก ํ ์ด๋ธ 'myroads'๋ฅผ 'extratab' ํ ์ด๋ธ์ ์กฐ์ธํฉ๋๋ค.
DBF ๋๋ผ์ด๋ฒ์์ ์ง์๋จ):
db.execute sql="extratab SET ์ด๋ฆ ์ ๋ฐ์ดํธ=(extratab.cat=myroads.cat์ธ myroads์์ ๋ผ๋ฒจ ์ ํ)"
onworks.net ์๋น์ค๋ฅผ ์ฌ์ฉํ์ฌ ์จ๋ผ์ธ์ผ๋ก db.executegrass ์ฌ์ฉ