mysql 里面有go的用法吗

mysql 里面有go的用法吗,第1张

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语言里面实现对数据库的 *** 作,用什么包好等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9747562.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存