mysql不像 SQL Server,写一段SQL,要go了才执行,默认 分号就执行了。
在网上找了一大堆例子,最后简化一下把,一下会从安装mysql开始,与大家分享一下如何用go链接服务器上的mysql
我用的是ubuntu系统
1,安装mysql:sudo apt-get install mysql-server (记住root的密码假设密码为root123)
2,进入mysql:mysql -uroot -p 然后输入密码
3,创建一个数据库:create database people;
4,给数据库people添加用户:GRANT ALL PRIVILEGES ON people TO peo@localhost IDENTIFIED BY "peo123";
5,调整数据库配置以便于远程访问:GRANT ALL PRIVILEGES ON people TO peo@“%” IDENTIFIED BY "peo123"; 然后推出mysql执行:sudo nano /etc/mysql/mycnf
修改bind-address=127001 到bind-address= 机器的IP(就是安装mysql的机器的ip)
6,重启mysql:sudo /etc/initd/mysql restart
7,建表:首先进入mysql:mysql -u peo -p
进入数据库下:use people
创建表:create table hello(age int, name varchar(10));
插入一条数据:insert into hello(age, name) values(19, "hello world");
至此数据库方面的工作已经做好,接下来是go语言了
8,首先下载mysql的驱动包(应该是这样叫)执行 go get githubcom/go-sql-driver/mysql代码会下载到你的gopath下(执行export可以查看gopath)
接着就是下面的代码了
package main
import "database/sql"
import _ "githubcom/go-sql-driver/mysql"
import "encoding/json"
import "fmt"
type User struct {
Age int `json:"age"`
Name string `json:"name"`
}
func main() {
fmtPrintln("start")
db, err := sqlOpen("mysql", "peo:peo123@tcp(192168058:3306)/peoplecharset=utf8")
if err != nil {
panic(err)
}
rows, err := dbQuery("select age,name from hello")
if err != nil {
panic(err)
}
defer rowsClose()
for rowsNext() {
user := &User{}
err = rowsScan(&userAge, &userName)
if err != nil {
painc(err)
}
b, _ := jsonMarshal(user)
fmtPrintln(string(b))
}
println("end")
}
至此结束
-- 只插入关键的几列, 其他列就不折腾了
CREATE TABLE #count_card (
card_id INT,
card_number varchar(10),
card_pass varchar(20)
);
GO
-- 假设插入 10行, 首字母 A
INSERT INTO #count_card
SELECT
tnumber,
'A' + RIGHT( REPLICATE('0', 8) + CAST(tnumber as varchar) , 8),
RIGHT(STR(RAND(tnumber + 100RAND()), 18, 17),12)
FROM
masterspt_values t
WHERE
ttype='P'
AND tnumber between 1 and 10;
GO
-- 核对数据
SELECT FROM #count_card ;
GO
card_id card_number card_pass
----------- ----------- --------------------
1 A00000001 894660572885
2 A00000002 080990285468
3 A00000003 267319998049
4 A00000004 453649710632
5 A00000005 639979423213
6 A00000006 826309135795
7 A00000007 012638848378
8 A00000008 198968560959
9 A00000009 385298273542
10 A00000010 571627986123
(10 行受影响)
-- 注: 本查询使用了 masterspt_values 表, 用于获取一个 连续的编号。
-- 但是这个表的行数不多
-- 这个 表里面,最大支持的数量是:
SELECT
MIN(number), MAX(number)
FROM
masterspt_values
WHERE
type='P'
----------- -----------
0 2047
(1 行受影响)
尽量不要使用ORM,简单的数据库交互是会省很多事。
但是一旦查询语句越来越复杂,关联表越来越多,当你发现正在使用的ORM框架做不到时再换其他框架代价会很大。为什么有那么多框架?就是没有一个框架能解决所有哪怕是大多数问题。
建议只使用数据库驱动库,database/sql库,可以完成所有go语言与数据库的交互。
set quoted_identifier off
go
在程序关加上这段代码,双引号就会被SQL识别。
引用帮助:“
使 Microsoft® SQL Server™ 遵从关于引号分隔标识符和文字字符串的 SQL-92 规则。由双引号分隔的标识符可以是 Transact-SQL 保留关键字,或者可以包含 Transact-SQL 标识符语法规则通常不允许的字符。
语法
SET QUOTED_IDENTIFIER { ON | OFF }
注释
当 SET QUOTED_IDENTIFIER 为 ON 时,标识符可以由双引号分隔,而文字必须由单引号分隔。当 SET QUOTED_IDENTIFIER 为 OFF 时,标识符不可加引号,且必须遵守所有 Transact-SQL 标识符规则。有关更多信息,请参见使用标识符。文字可以由单引号或双引号分隔。
”
我觉得可以通过命令先转化为excel格式,然后再截取相关(相同)字段另存为一个文件,最后再在另一数据库中导入新产生的excel文件
第一步:
mdf和ldf是SQL SERVER的数据库数据文件和日志文件,可以通过SQL SERVER的数据转换服务转为excel。
下面以SQL SERVER的企业管理器里面 2000 为例说明。
首先这个mdf文件如果是从别的地方考过来的,需要先附加数据库,方法为SQL SERVER的企业管理器里面,右键“所有任务”-“附加数据库”,找到这个mdf文件确定即可。
下一步就是转换了。在方法如下:
在SQL SERVER的企业管理器里面,选择要转换的数据库,“所有任务”-“导出数据库”,源数据不用动,下一步目的数据,驱动选择带excel字样的那个,下几步选择好要转换的数据库表,自己试试吧,很容易的。
第二步:
select into 你的sql数据库表 from openrowset('MicrosoftJetOLEDB40','Excel 80;Database=c:\xls', 'select from [sheet_name$]')excel本来是一中数据库所以能用t-sql语言来 *** 作数据sheet_name$代表的是工作表不用区分开来的它所替代的是excel表中里面Sheet1Sheet2这类的工作表我给你上张图
用循环语句生成字段值insert
SQL 如下:
create procedure InsertTest
as
begin
declare @i int
declare @s varchar(20)
set @i=1
while @i<=100
begin
select @s=cast(@i AS varchar(20))
insert into test (A,B,C,D) VALUES ('a'+@s,'b'+@s,'ccccc','ddddd')
SET @i=@i+1
end
end
以上就是关于mysql 里面有go的用法吗全部的内容,包括:mysql 里面有go的用法吗、使用脚本向数据库中插入指定的随机数据!、go语言里面实现对数据库的 *** 作,用什么包好等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)