Форум программистов, компьютерный форум, киберфорум
Go (Golang)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.76/21: Рейтинг темы: голосов - 21, средняя оценка - 4.76
0 / 0 / 1
Регистрация: 16.06.2013
Сообщений: 25

Скрипт, подключающийся к БД и скачивающий таблицу в CSV-файл

17.10.2016, 11:54. Показов 4082. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день. Нужен скрипт который подключается к базе данных, считывает определенную таблицу и выгружает в CSV файл данные на компьютер. Есть пример кода который считывает массив указанных даных и записывает в CSV файл.
Чтоб подключится к базе используют sql.Open("mssql", "server=*******;port=******;user id=*****;password=*******;database=***** ")
и импортируют пакеты "database/sql" , _ "github.com/denisenkom/go-mssqldb"
Не получается разобраться.
Буду благодарен за любую помощь!

Go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
package main
 
import (
    "os"
    "log"
    "encoding/csv"
)
 
var data = [][]string{{"Line1", "Hello Readers of:"}, {"Line2", "golangcode.com"}}
 
func main() {
    file, err := os.Create("result.csv")
    checkError("Cannot create file", err)
    defer file.Close()
 
    writer := csv.NewWriter(file)
 
    for _, value := range data {
        err := writer.Write(value)
        checkError("Cannot write to file", err)
    }
 
    defer writer.Flush()
}
 
func checkError(message string, err error) {
    if err != nil {
        log.Fatal(message, err)
    }
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
17.10.2016, 11:54
Ответы с готовыми решениями:

Сохранить таблицу в csv файл
Как можно сохранить таблицу в csv файл? И оператор импорта тоже напишите. Добавлено через 37 минут Точнее, как выставить расширения...

Скрипт на php, записывающий данные в .csv файл
Доброе время суток, уважаемые. Проблема в скрипте. От него требуется, чтобы он записывал значения Name Price и тд. в .csv файл в одну...

Открыть csv файл средствами opendialog и загрузить в таблицу
Я только у истоков программирования, но появилась такая задача: необходимо открыть сsv файл и загрузить его в таблицу немного изменить и...

8
2444 / 1842 / 406
Регистрация: 15.12.2013
Сообщений: 8,243
17.10.2016, 12:02
ohotass, сформулируйте задачу конкретнее. Неясно на каком этапе у вас проблема.
0
0 / 0 / 1
Регистрация: 16.06.2013
Сообщений: 25
17.10.2016, 12:17  [ТС]
Есть удаленная база данных MySQL к которой надо подключится, в этой базе много таблиц с данными, мне надо определенные таблицы выгрузить в файл CSV на компьютер. Вот не знаю как правильно сделать, примеры есть, а все собрать не получается.
0
2444 / 1842 / 406
Регистрация: 15.12.2013
Сообщений: 8,243
17.10.2016, 12:22
Тогда давайте по частям.
1. Установите соединение с БД.
2. Загрузите необходимые таблицы.
3. Запишите данные в CSV.

На каком этапе проблема?
0
0 / 0 / 1
Регистрация: 16.06.2013
Сообщений: 25
17.10.2016, 12:41  [ТС]
Не могу с кодом разобраться, как в коде дописать определенную мне таблицу чтоб она выгружалась в CSV файл. Вот код

Go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
package main
 
import (
"github.com/revel/revel"
"os"
"encoding/csv"
"database/sql"
"fmt"
"log"
"strconv"
_ "github.com/lib/pq"
)
 
type App struct {
*revel.Controller
}
 
func (c App) Index() revel.Result {
 
//DB CONN
db, err := sql.Open("postgres", "user=app password=***** dbname=***** host=***** port=*****")
if err != nil {
panic(err.Error())
}
//QUERY
rows, err := db.Query(`SELECT * FROM table`)
if err != nil {
log.Fatal(err)
}
defer rows.Close()
defer db.Close()
 
// CREATE A CSV FILE
f, err := os.Create("./data.csv") // Define filename
if err != nil {
fmt.Println(err)
}
defer f.Close()
 
//TABLE VARS
var (
id int
name string
email string
score int
city string
)
 
cont := 0 // COUNTER TO DEFINE HEADERS ROW
w := csv.NewWriter(f)
for rows.Next() {
err := rows.Scan(&id, &name, &email, &score, &city)
if err != nil {
log.Fatal(err)
}
 
// Write Table data data to CSV file
if cont == 0 { // Set table headers
var record []string
record = append(record, "#")
record = append(record, "Name")
record = append(record, "Email")
record = append(record, "Score")
record = append(record, "City")
w.Write(record)
cont++
 
}
 
var record []string
record = append(record, strconv.Itoa(cont))
record = append(record, name)
record = append(record, email)
record = append(record, strconv.Itoa(score))
record = append(record, city)
w.Write(record)
cont++;
}
w.Flush()
 
}
0
2444 / 1842 / 406
Регистрация: 15.12.2013
Сообщений: 8,243
17.10.2016, 12:50
ohotass, этот код использует драйвер под PostgreSQL. Он не подойдет для MySQL.
Выберите пакет из списка и посмотрите пример работы с ним.
0
0 / 0 / 1
Регистрация: 16.06.2013
Сообщений: 25
17.10.2016, 13:12  [ТС]
Поменял драйвер, когда собираю пишет что not enough arguments to return

Добавлено через 1 минуту

Go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
package main
 
import (
 
    "os"
    "encoding/csv"
    "database/sql"
    "fmt"
    "log"
    "strconv"
    
    _ "github.com/denisenkom/go-mssqldb"
    "github.com/revel/revel"
)
 
type App struct {
*revel.Controller
}
 
func (c App) Index() revel.Result {
 
//DB CONN
 
db, err := sql.Open("mssql", "server=127.0.0.1;user id=*****;password=*****;port=*****;database=*****")
 
 
if err != nil {
panic(err.Error())
}
//QUERY
rows, err := db.Query(`SELECT * FROM table`)
if err != nil {
log.Fatal(err)
}
defer rows.Close()
defer db.Close()
 
// CREATE A CSV FILE
f, err := os.Create("./data.csv") // Define filename
if err != nil {
fmt.Println(err)
}
defer f.Close()
 
//TABLE VARS
var (
id int
name string
email string
score int
city string
)
 
cont := 0 // COUNTER TO DEFINE HEADERS ROW
w := csv.NewWriter(f)
for rows.Next() {
err := rows.Scan(&id, &name, &email, &score, &city)
if err != nil {
log.Fatal(err)
}
 
// Write Table data data to CSV file
if cont == 0 { // Set table headers
var record []string
record = append(record, "#")
record = append(record, "Name")
record = append(record, "Email")
record = append(record, "Score")
record = append(record, "City")
w.Write(record)
cont++
 
}
 
var record []string
record = append(record, strconv.Itoa(cont))
record = append(record, name)
record = append(record, email)
record = append(record, strconv.Itoa(score))
record = append(record, city)
w.Write(record)
cont++;
}
w.Flush()
 
}
0
Эксперт функциональных языков программированияЭксперт Java
 Аватар для korvin_
4575 / 2773 / 491
Регистрация: 28.04.2012
Сообщений: 8,760
17.10.2016, 17:51
Цитата Сообщение от ohotass Посмотреть сообщение
Есть удаленная база данных MySQL
Цитата Сообщение от ohotass Посмотреть сообщение
postgres
Цитата Сообщение от ohotass Посмотреть сообщение
mssql
Ты уж определись, какая у тебя там СУБД.

Цитата Сообщение от ohotass Посмотреть сообщение
func (c App) Index() revel.Result {
Функция должна возвращать значение типа revel.Result, у тебя этого нет.
0
0 / 0 / 1
Регистрация: 16.06.2013
Сообщений: 25
17.10.2016, 18:00  [ТС]
У меня mssql. Так как правильно написать?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
17.10.2016, 18:00
Помогаю со студенческими работами здесь

Скрипт.Нужно из файла csv в AD. и автоматом этот скрипт добавляет 50 пользователей из execl
Import-Module ActiveDirectory $Users = Import-CSV -Delimiter ";" -Path "C:\test\lol.csv" $allou = Get-ADOrganizationalUnit -Filter *...

Экспортировать файлы html в таблицу csv. Каждый файл html должен попасть строго в определенную в ячейку
добрый час. уважаемые участники. есть вот такая задача: есть файл csv и файлы html. как экспортировать файлы html в таблицу csv. каждый...

Запись в CSV-файл из массива. Не является форматом csv!
В общем искал работу... Дали тестовое написать парсер для сайта с выводом информации в csv-файл. Всё написал, сбросил, пришёл ответ что у...

Скрипт выгрузки в .csv
Доброго времени суток ! Помогите пожалуйста со скриптом. В таблице должны собираться данные: • Дата сбора заказов • ...

Запись в csv. Скрипт внутри
Привет всем. Ниже код предоставляю, помогите разобраться. В основном 2 проблемки: 1 проблема. В textarea ввожу слова другом под...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США. Нашел на реддите интересную статью под названием «Кто-нибудь знает, где получить бесплатный компьютер или. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru