Как в sql создать тестовую таблицу, которая бы весила несколько Gb? И как потом проверить целостность этих данных?

Linux базы данных sql

Задача:
Создать через sql тестовую таблицу, которая весит 2-3 гигабайт. Через некоторое время проверить то, что данные не изменились.
Естественно, что все действия должны выполняться в командной строке.

Примечание:
Что значит нахрена? Стандартный смоук тест.
Скрипт не пригодился, нашёл самостятельно всё.

Для MySQL:
# CREATE DATABASE new_database;
# USE new_database;

CREATE TABLE rand_numbers (
number INT NOT NULL
) ENGINE = MYISAM;

DELIMITER $$
CREATE PROCEDURE InsertRand(IN NumRows INT, IN MinVal INT, IN MaxVal INT)
BEGIN
DECLARE i INT;
SET i = 1;
START TRANSACTION;
WHILE i <= NumRows DO
INSERT INTO rand_numbers VALUES (MinVal + CEIL(RAND() * (MaxVal - MinVal)));
SET i = i + 1;
END WHILE;
COMMIT;
END$$
DELIMITER ;

CALL InsertRand(500000000, 9999, 99999999);

Для Postgresql:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>


#define MIN_ID 0
#define MAX_ID 10000000

#define MAX_LEN 1024

#define CHARS "0123456789" \
"ABCDEFGHIJKLMNOPQRSTUVWXYZ" \
"abcdefghijklmnopqrstuvwxyz"


int main()
{
char const * const chars = CHARS;
int const num_chars = strlen(chars);

printf("COPY test1 FROM STDIN;\n");

for(int i = MIN_ID; i <= MAX_ID; ++i)
{
printf("%d\t", i); // can be optimized if needed
int const len = rand() % MAX_LEN + 1;
for(int j = 0; j < len; ++j)
putchar(chars[rand() % num_chars]);
putchar('\n');
}

printf("\\.\n");
return 0;
}

and then run these commands:

gcc -std=c99 -Wall generate_test1_data.c -o generate_test1_data
./generate_test1_data > populate_test1.sql
psql -U ... -d ... -f populate_test1.sql
Ответы:
Странный у Вас какой-то вопрос. Ну первое, что приходит в голову - напишите скриптик на любом удобном Вам языке, который засовывает большое количество одинаковых строк, а потом проверьте их количество. Например так:
<?php
$text = ''; //Тут большой текст
$n = 10000000;
$query_ins = 'INSERT INTO mytable SET
`i` = 3141592,
`text` = \''.addslashes($text).'\'
';
for($i=0; $i<=$n; $i++;)
{
   mysql_query($query_ins);
}


11 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.